впрыскивать dll не работает? - PullRequest
1 голос
/ 05 февраля 2011

Я создал простую DLL.Я внедряю его в процесс, но он не показывает окно сообщения. Код для поля сообщения написан в dll.

код dll:

//DLL TEST
#include <windows.h>

BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) {
     if(callReason == DLL_PROCESS_ATTACH)
                   MessageBox(0, "Dll Injection Successful! ", "Dll Injector", MB_ICONEXCLAMATION | MB_OK);
     return TRUE;
}

1 Ответ

4 голосов
/ 05 февраля 2011

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

Тем не менее, у вашего кода есть большая проблема.Вы пытаетесь позвонить MessageBox внутри DllMain .Безопасно использовать только функции из Kernel32.dll, а не форму User32.dll, которую нельзя инициализировать.На MSDN вы можете прочитать

Вызов функций, для которых требуются библиотеки DLL, отличные от Kernel32.dll, может привести к проблемам, которые трудно диагностировать.Например, вызов функций User, Shell и COM может вызвать ошибки нарушения доступа, поскольку некоторые функции загружают другие компоненты системы.

...