2011-02-05 2 views
1

Я создал простую dll. Я ввожу его в процесс, но он не показывает окно сообщения. Код для ячейки mesg написан в 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; 
} 
+0

Вы уверены, что код инъекции работает правильно? –

ответ

4

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

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

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

Смежные вопросы