0

我正在尝试在 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);

有任何想法吗?提前致谢!

4

1 回答 1

1

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

于 2013-02-21T09:00:11.433 回答