Как прочитать PE заголовок текущего процесса в драйвере фильтра

Я звоню PsGetCurrentProcess чтобы получить PEPROCESS структура, как я могу прочитать PE заголовок моего процесса в режиме ядра, что-то вроде этот код, который делает это в режиме пользователя?
Моя цель — получить информацию о версии из PE-заголовка.

0

Решение

Я рекомендую получить эту информацию при создании процесса. Ты можешь использовать PsSetCreateProcessNotifyRoutine(Ex) получать уведомления при создании нового процесса. PsSetLoadImageNotifyRoutine информирует вас, когда PE-файл (включая основной исполняемый файл процесса) сопоставлен с виртуальным адресным пространством.

Это плохая идея, чтобы прочитать информацию о версии из памяти процесса, когда процесс полностью инициализирован и запущен. Процесс имеет полный контроль над отображением файла PE, поэтому он может подделать информацию о версии. Более того, вы можете получить доступ к памяти режима пользователя только при низком уровне IRQL (PASSIVE_LEVEL). Обратные вызовы минифильтров также могут быть вызваны в APC_LEVEL / DISPATCH_LEVEL.

1

Другие решения

Других решений пока нет …