求解DotNetDetour使用的问题

查看 50|回复 1
作者:csjwaman   
以下是bigbaldy1128的DotNetDetour库的部分使用说明:### 注意:方法参数
参数签名要和被Hook的原始方法一致,如果不一致将导致无法找到原始方法(原因:存在重载方法无法确认是哪个的问题)。
如果存在我们无法使用的参数类型的时候(如:私有类型),我们可以用object等其他引用类型代替此类型(注意不要用值类型,否则可能出现内存访问错误),并把此参数用`RememberType`进行标记:
``` C#
//目标方法:
public string SolidMethod(MyClass data, int code){...}
//我们的Hook方法:
public string MyMethod([RememberType("Namespace.xxx.MyClass")]object data, int code){...}
```
按照使用说明,可以HOOK成功含自定义类型参数的函数.但在HOOK方法中下断后,data参数值为空,无法利用这个参数作判断.
比如,在public string MyMethod([RememberType("Namespace.xxx.MyClass")]object data, int code){...}中下断,断下后参数data的类型为object,其值为空,
而步进到原始函数时,data的类型为MyClass.值为正常值.
如果想在HOOK函数中,根据data的值分别处理,而HOOK函数中data又为空.
请问该怎么处理?

参数, 类型

csjwaman
OP
  

已经自己找到原因,是目标函数与原始函数的签名不一致造成的.请问版主怎么结贴?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部