Перехват функций Windows API для перехвата загрузки DLL (только для Windows) - PullRequest
3 голосов
/ 07 февраля 2010

Я хочу перехватить загрузку DLL, чтобы я мог их использовать. Моей первой идеей было подключить GetProcAddress. Удивительно, но, перехватывая его, я могу только перехватывать вызовы, сделанные внутри процесса, которому принадлежит моя библиотека. (Я открыл другие исполняемые файлы, которые вызывают GetProcAddress, и эти вызовы не перехватываются).

Пример вывода:

C: \ Windows \ syswow64 \ kernel32.dll Module32NextW

C: \ Windows \ syswow64 \ kernel32.dll CreateToolhelp32Snapshot

C: \ Windows \ system32 \ dinput.dll DirectInputCreateW

C: \ Windows \ SysWOW64 \ ntdll.dll DirectDrawCreate

В любом случае, я хочу знать, с чего мне начать перехватывать загрузку DLL, чтобы я мог затем использовать их функции.

По сути, я хочу иметь возможность вызывать GetModuleInformation для любой загруженной библиотеки DLL.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2010

Во-первых, что вы делаете, для чего требуется глобальный хук?

Если вы хотите получить уведомление о том, что DLL загружена в любом процессе, вы можете посмотреть в PsSetImageLoadNotifyRoutine, который является подпрограммой режима ядра. Несмотря на то, что это режим ядра, его не очень сложно использовать, а написание базового драйвера довольно забавно.

Другим способом будет принудительная загрузка вашей библиотеки в каждом процессе. Существует множество методов, одним из наиболее допустимых будет перехват сообщений Windows .

0 голосов
/ 09 февраля 2010

Установите общесистемный хук на функцию LoadLibrary. (Я понятия не имею, как использовать этот небольшой комментарий под вопросом так)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...