我试图在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);
有什么想法吗?提前谢谢!
答案 0 :(得分:1)
我在阅读了Dark Falcon提供的文章后,在5分钟内设法解决了这个问题。我完全推荐阅读它!因此,所有答案都归功于他!