PsSetLoadImageNotifyRoutine:Create всегда 15
От: pva  
Дата: 24.03.17 18:48
Оценка:
Привет,

регистрирую колбек
    PsSetLoadImageNotifyRoutine(ModuleImageLoadedNotify);
void ModuleImageLoadedNotify(PUNICODE_STRING FullImageName, HANDLE ProcessId, PIMAGE_INFO ImageInfo, BOOLEAN Create) {
    moduleDebugPrint((__FUNCTION__"(name: %wZ, base: 0x%p, size: 0x%08x, create: %d)\n",
        FullImageName, ImageInfo->ImageBase, ImageInfo->ImageSize, Create));
}

Win7 x64 (UPD). Create всегда прилетает 15 что на загрузке что на выгрузке. ЧЯДТ?
newbie
Re: PsSetLoadImageNotifyRoutine:Create всегда 15
От: -prus-  
Дата: 24.03.17 20:50
Оценка: +1
Здравствуйте, pva, Вы писали:

pva>Привет,


pva>регистрирую колбек
pva>    PsSetLoadImageNotifyRoutine(ModuleImageLoadedNotify);
pva>
pva>void ModuleImageLoadedNotify(PUNICODE_STRING FullImageName, HANDLE ProcessId, PIMAGE_INFO ImageInfo, BOOLEAN Create) {
pva>    moduleDebugPrint((__FUNCTION__"(name: %wZ, base: 0x%p, size: 0x%08x, create: %d)\n",
pva>        FullImageName, ImageInfo->ImageBase, ImageInfo->ImageSize, Create));
pva>}

pva>Win7 x64 (UPD). Create всегда прилетает 15 что на загрузке что на выгрузке. ЧЯДТ?

Регистрируя этот колбек вы сможете только мониторить загрузку (мапинг) пользовательского модуля или драйвера. Выгрузку вы не увидите.

Called by the operating system to notify the driver when a driver image or a user image (for example, a DLL or EXE) is mapped into virtual memory


И там в документации у MS походе опечатка как раз в описании последнего параметра для SetLoadImageNotifyRoutine. Там для параметра Create написано:

Create [in]
Indicates whether the process was created (TRUE) or deleted (FALSE).


Походу там копипаст из SetCreateProcessNotifyRoutine.

Ну а по поводу 15 — BOOLEAN в wdk объявляна так:
typedef UCHAR BOOLEAN;


Нужно дизасмить ядро и там смотреть, почему именно 15.
С уважением,
Евгений
Отредактировано 24.03.2017 21:18 -prus- . Предыдущая версия .
Re: PsSetLoadImageNotifyRoutine:Create всегда 15
От: okman Беларусь https://searchinform.ru/
Дата: 25.03.17 05:57
Оценка: 2 (1)
Здравствуйте, pva, Вы писали:

pva>Привет,


pva>регистрирую колбек
pva>    PsSetLoadImageNotifyRoutine(ModuleImageLoadedNotify);
pva>
pva>void ModuleImageLoadedNotify(PUNICODE_STRING FullImageName, HANDLE ProcessId, PIMAGE_INFO ImageInfo, BOOLEAN Create) {
pva>    moduleDebugPrint((__FUNCTION__"(name: %wZ, base: 0x%p, size: 0x%08x, create: %d)\n",
pva>        FullImageName, ImageInfo->ImageBase, ImageInfo->ImageSize, Create));
pva>}

pva>Win7 x64 (UPD). Create всегда прилетает 15 что на загрузке что на выгрузке. ЧЯДТ?

По-моему, это вообще опечатка, параметра Create у этой функции нет.
Вот объявление callback-функции из старых оффлайновых WDK (7.1, 8):
VOID
(*PLOAD_IMAGE_NOTIFY_ROUTINE) (
    IN PUNICODE_STRING  FullImageName,
    IN HANDLE  ProcessId, // where image is mapped
    IN PIMAGE_INFO  ImageInfo
    );
Re[2]: PsSetLoadImageNotifyRoutine:Create всегда 15
От: pva  
Дата: 25.03.17 12:02
Оценка:
Здравствуйте, okman, Вы писали:

O>По-моему, это вообще опечатка, параметра Create у этой функции нет.

Точно! Сейчас пробежался ассистом — так и оказалось.
Правда у меня и ДДК 7600 который.
newbie
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.