请教 关于HOOKCOM接口出现的崩溃问题

bianshj 2011-09-13 03:01:24
错误信息: 访问地址错误,访问无效地址。
操作系统: windows 7
工作描述:
使用Delphi Hook一个Com接口 (A-->B) 我hook了A接口 ,用自己的B接口来代替。并且自己的B接口中只是调用了原来的A接口,但是当系统调用A的时候,进入到B之前会出现错误。

0972FA6C 55 push ebp
0972FA6D 8BEC mov ebp,esp //esp值为0000002 感觉这个有问题
0972FA6F 53 push ebx
0972FA70 8B4510 mov eax,[ebp+$10] //如果这个是第三个参数
0972FA73 85C0 test eax,eax
0972FA75 7404 jz $0972fa7b //这句条件不成立。如果成立就正确了,可以正确跳到函数体第一句了。
0972FA77 33D2 xor edx,edx
0972FA79 8910 mov [eax],edx -->出错后断点停在这个地方
0972fa7b。。。。。。。。。。。。。。。 开始函数体。我的断点下在这里,没有进入。


如果说上面的判断 test eax,eax, 是判断第三个参数的,由于ebp地址不对,这个参数也有问题,但是这是一个函数的入口为什么要去判断参数的初值呢?而且上面的代码中可以看出来,如果 eax 为0 就正确了。但是为什么要去判断这个地方呢?

哪位研究深一点的,给些建议!谢谢!!

补充一下,已经成功HOOK过其他COM接口,但是Hook IMMDeviceEnumerator接口的任何方法均出现上面的问题,请问这个接口有特别的地方吗?
...全文
91 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sxqlyy 2011-09-14
用什么方式hook的 从你贴的代码看不出来...

0972FA6D 8BEC mov ebp,esp //esp值为0000002 感觉这个有问题
=== 这个肯定有问题 建议你在分别在hook和不hook的情况下 单步走走 观察下哪里不同
回复
limang89 2011-09-13
帮顶下。。。。
回复
相关推荐
发帖
其它技术问题
创建于2007-09-28

3849

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2011-09-13 03:01
社区公告
暂无公告