Читал статьи mamaich-а, он про это ничего не говорит. Смотрел сорсы IceExt, единственное что нашел это переменную в которую ложится адрес некой функции pLoadKDE в теле софтайс, которая вроде бы как и загружает расширение. Нашел функцию, вызвал, - поток который вызывал входит в штопор в теле софтайс jump-ом сам на себя. Может кто-то разбирался, подскажите плз.
спасибо за ссылку, в английском не силен, поэтому пришлось с переводчиком страдать, единственное что понял, что в IceExt используется другая техника какая-то, в отличии от способа по ссылке, тоесть IceExt вызывается из ntoskrnl и DriverEntry принимает как обычно 2 параметра, после чего модифицируется тело софтайс и вообщем каким-то макаром софтайс распознает расширение. А по ссылке выше говорится, что DriverEntry вызывает сам софтайс с тремя аргументами, как длл, вообщем обязательным условием должен быть прием DriverEntry трех параметров, WinDbgExtensionDllInit в экспорте, модуль должен быть зарегин в реестре с зависимостью от NTICE. Вроде все понятно, за исключением самого главного, - как софтайс решает что именно этот модуль является его расширением и что надо вызывать именно его DriverEntry. Помогите разобраться ...
просто когда запускаю свой модуль, и если софтайс не запущен, то сначало стартует он, но DriverEntry моего модуля все равно вызывается ntoskrnl и во втором параметре естестественно будет не DLL_PROCESS_ATTACH.