请问一个关于DLL_PROCESS_DETACH的错误

neji_bai 2012-03-31 11:43:27
我做了一个简单的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这个窗才对的
...全文
363 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
neji_bai 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

内容太多。。。
...Calling functions that require DLLs other than Kernel32.dll may result in problems that are difficult to diagnose. For example, calling User, Shell, and COM functions can cause access vio……
[/Quote]

呃 好像是你说的这个结果。。。
newseacher 2012-04-21
  • 打赏
  • 举报
回复
源码级调试下
unituniverse2 2012-04-19
  • 打赏
  • 举报
回复
内容太多。。。
...Calling functions that require DLLs other than Kernel32.dll may result in problems that are difficult to diagnose. For example, calling User, Shell, and COM functions can cause access violation errors, because some functions load other system components. Conversely, calling functions such as these during termination can cause access violation errors because the corresponding component may already have been unloaded or uninitialized.
...
unituniverse2 2012-04-19
  • 打赏
  • 举报
回复
你写程序都不看文档的。很无语...
brikehuang 2012-04-18
  • 打赏
  • 举报
回复
看看WINDOWS核心编程第20章:DLL的进入点函数
jamseyang 2012-04-07
  • 打赏
  • 举报
回复
是挺奇怪的,把代码都贴出来,大家一起研究下
neji_bai 2012-03-31
  • 打赏
  • 举报
回复
第一次运行崩溃的问题找到了
但是弹窗多次这个 不明白

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧