处理钩子功能

时间:2013-02-20 17:27:41

标签: winapi dll com hook easyhook

我试图在C#中使用EasyHook正确地从COM对象(非托管)挂钩到一个方法。

我能够确定COM对象的方法的地址,我可以正确触发我的钩子函数。我这样做了,其余代码与教程中的代码非常类似:

SendHook = LocalHook.Create(0x12345678, new DMyFunc(MyFunc_Hooked), this);

然而,一旦进入我的钩子,所有参数都被扰乱(它们不等于我最初传递的那些参数)。

另外,我无法返回任何内容(请注意,我还尝试挂钩另一个返回短片的函数,并且该值没有正确返回)。

当我打开eXescope时,这是功能签名之一:

function MyFunc(out ParamA:^BSTR; out ParamB:^bool): ^TypeA;

当我在C#中正常使用COM对象时,此函数具有以下签名:

TypeA MyFunc(ref string ParamA, ref bool ParamB);

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

我在阅读了Dark Falcon提供的文章后,在5分钟内设法解决了这个问题。我完全推荐阅读它!因此,所有答案都归功于他!