Advertisement

在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)

还没有任何评论哟~