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

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


...全文
225 点赞 收藏 11
写回复
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
异常信息是什么?
回复
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
社区公告
暂无公告