我正在尝试在 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);
有任何想法吗?提前致谢!