1

我创建了一个简单的 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;
}
4

1 回答 1

4

首先,您没有发布用于注入 DLL 的代码,或者至少没有描述您进行注入的方式。

不过你的代码有一个大问题。您尝试在DllMainMessageBox内部调用。只使用 Kernel32.dll 中的函数而不是不能初始化的 User32.dll 是安全的。在MSDN上,您可以阅读

调用需要除 Kernel32.dll 之外的 DLL 的函数可能会导致难以诊断的问题。例如,调用 User、Shell 和 COM 函数可能会导致访问冲突错误,因为某些函数会加载其他系统组件。

于 2011-02-05T17:33:08.837 回答