使用全局钩子注入动态库异常的问题~

yebeans 2007-09-11 09:45:37
设置了一个全局钩子CBTProc,钩子函数在动态库 B.dll中,实现对其它进程的注入。
一般进程还好,但是对于3DMax不知道为什么debug版的可以,而release的在加载 B.dll的时候却会有异常(在vc内部显示的),外部表现就是3Dmax进程卡死,再没有动作,这个时候B.dll的DllMain还没有进去.
  有没有人知道为什么,因为会对所有的进程注入,对其他进程都没有什么影响,所以代码应该没有什么大的问题。而debug的缺可以正常运行,为什么release就不行了呢,优化什么的都调过了也没用~


...全文
284 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yebeans 2007-12-03
  • 打赏
  • 举报
回复
后来换个钩子类型解决了,散分
yuxinxxgc 2007-10-02
  • 打赏
  • 举报
回复
外部表现就是3Dmax进程卡死,再没有动作,
----------------------------------------
是不是3D类游戏,我曾经写外挂时候遇到过,关闭挂弹出的对话框就好了,研究好久一直没有解决,据说是DirectX编程的问题。
另:没有详细看你的问题,断章取义,希望给你一个参考
nooning 2007-09-27
  • 打赏
  • 举报
回复
我也做过类似的事,debug ok release 出错,有些地方是优化的问题,最好对你关键代码关闭全局优化。但很多时候是因为你的代码本身有bug,建议先让目标进程在调试状态,再远注看看
linuxpgy 2007-09-22
  • 打赏
  • 举报
回复
我的一个代码也用到了CBT hook,不知道有没有问题,你可以试试:

http://blog.sina.com.cn/s/blog_4e5dcb9701000c44.html



yuhan_0110 2007-09-13
  • 打赏
  • 举报
回复
我估计要么还是你的程序有问题。你可以在release下进行调试,看看还会不会出现问题。
shanhqk 2007-09-13
  • 打赏
  • 举报
回复
1.在release下调试.
2.使用日志文件输出关键点信息.
yebeans 2007-09-11
  • 打赏
  • 举报
回复
有没有人知道 关于release和debug版本动态库的加载有什么区别么
yebeans 2007-09-11
  • 打赏
  • 举报
回复
使用监视工具会发现B.dll被3dmax进程加载了2次,然后第二次加载的时候就卡住了。
两次加载的空间地址不一样。查看内存,第一次的加载的地址上没有,第二次的地址上面才有(但是不知道加载完成没有)。
如果是debug的都是一次加载完成。
yebeans 2007-09-11
  • 打赏
  • 举报
回复
0xC0000005 就是这个~访问冲突,不是那种弹出来的 ,是在vc的输出窗口显示的,应该是被3DMax捕捉了~
如果是debug的在异常信息那里会显示加载符号~然后一切正常
awperpvip 2007-09-11
  • 打赏
  • 举报
回复
错误好是什么啊?比如0xC0000005什么的...
大熊猫侯佩 2007-09-11
  • 打赏
  • 举报
回复
异常信息是什么?

15,473

社区成员

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

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