请教 关于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接口的任何方法均出现上面的问题,请问这个接口有特别的地方吗?
...全文
115 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxqlyy 2011-09-14
  • 打赏
  • 举报
回复
用什么方式hook的 从你贴的代码看不出来...

0972FA6D 8BEC mov ebp,esp //esp值为0000002 感觉这个有问题
=== 这个肯定有问题 建议你在分别在hook和不hook的情况下 单步走走 观察下哪里不同
limang89 2011-09-13
  • 打赏
  • 举报
回复
帮顶下。。。。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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