请问一个关于DLL_PROCESS_DETACH的错误
我做了一个简单的IAT HOOK的DLL 利用线程注入来实现
在DLL_PROCESS_ATTACH的时候进行HOOK处理
pfnOrig = GetProcAddress(GetModuleHandleA("Kernel32"),"CreateFileW");
HookAPI("Kernel32.dll",pfnOrig,(PROC)MyCreateFile);
功能能正常运行(此时 DLL_PROCESS_DETACH下没有任何代码)。
但是我在 DLL_PROCESS_DETACH:加上一个MessageBoxA(NULL,"TEST","TEST",MB_OK);以后就出问题了,被注入的程序会崩溃
这个DETACH的执行到底是怎么回事呢。
---------------------
补充说明一下 我的程序是这样的
在CMD下
HOOK程序 目标程序
HOOK后的结果应该是在执行CreateFile之前弹窗显示一下要创建的文件的名字,其中被注入的目标程序也是自己写的只有CreateFile一个简单的功能
如果DLL_PROCESS_DETACH下有了代码 在CMD下第一次运行 程序就会崩溃,然后再运行一次的话(不关闭CMD),就不会说崩溃,但是DLL_PROCESS_DETACH下的弹窗会执行很多次,然后才弹出创建文件的名字。
我之前认为的效果应该是先弹创建文件的名字 再弹TEST这个窗才对的