我试图使用此源将Rundll32的字符串(或char *)传递给使用(用MinGW)构建的DLL:
#include <windows.h>
__declspec( dllexport ) int hello(LPSTR content) {
MessageBox( NULL, content, "Message", MB_OK );
return 0;
}
运行此程序时,我会随机崩溃。这就是我的运行方式。
C:\workspace>c:\MinGW\bin\gdb.exe rundll32 -ex "run program1.dll,hello test"
我尝试在hello()处设置断点,看来“内容”是相当随机的。我是否以错误的方式从rundll32传递了参数?
如果我没有论点,那就很好用。
最佳答案
需要以非常特定的方式声明rundll32入口点。请查看this article,其中说明了如何做。我注意到的一件事是,对于名为“ EntryPoint”的符号,传递给rundll32的函数名称对于32位DLL应该为“ _EntryPoint @ 16”,对于64位DLL则仅为“ EntryPoint”。