在DLL的DllMain函数中启动线程
发布时间
阅读量:
阅读量
在近期编写一段代码的过程中,尝试在DLL的DllMain函数内部启动一个线程,但程序运行时却发生了崩溃现象。具体操作过程如下:开发了一个用于注入DLL的工具,借助该工具将目标DLL注入至资源管理器进程explorer.exe中。通过该工具将其他DLL注入到资源管理器线程的操作均能顺利执行,唯独当注入包含线程创建逻辑的DLL时,却出现了失败的情况。部分网友指出,微软官方并不推荐在DLL的DllMain函数中进行线程创建操作。
然而,在进一步排查过程中,我发现了一个难以解释的现象。首先回顾一下原本存在问题的代码逻辑,其结构较为简单,仅在DllMain函数中创建了一个线程,并且该线程的功能仅限于弹出一个对话框。
以下为测试所用的简化代码示例:
DWORD WINAPI ThreadFun( LPVOID )
{
MessageBox(NULL , "HELLO WORLD" , "HELLO WORLD" , NULL ) ;
return 1 ;
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
全部评论 (0)
还没有任何评论哟~
