【发布时间】:2011-12-04 18:27:29
【问题描述】:
我正在创建一个小 dll 以在 DLL-INJECTION POC(概念验证)中使用。我正在使用代码块的 c++ ide。
我的 dll 的 main (dllmain) 看起来像这样:
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
MessageBox(0, "myfirstdll loaded", "SUCCESS STATUS", MB_OK);
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
现在,当我从客户端程序(希望它加载!)加载 dll(使用 LoadLibrary)时,我的消息框不会弹出。这很令人沮丧,因为我正在做一个 poc。我知道我们在dllmain中做kernel32.dll等密集型业务时普遍存在的安全问题,但是,我这里的问题不是安全;我只需要直接从 dllmain 中弹出一个消息框。
那么,如何在加载 dll 时让我的消息框弹出?
【问题讨论】:
-
请格式化您的代码。
-
检查
LoadLibrary结果,可能DLL没有加载。 -
感谢您的评论;那确实很脏。
-
@tenfour,请将此作为答案。
-
使用 OutputDebugString() 和 SysInternals 的 DebugView 实用程序。