请教 关于HOOKCOM接口出现的崩溃问题
错误信息: 访问地址错误,访问无效地址。
操作系统: 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接口的任何方法均出现上面的问题,请问这个接口有特别的地方吗?