jgs
发表于 2023-9-13 09:10
谢谢楼主分享,学习收藏
chinamsu
发表于 2023-9-13 09:47
壹佰 发表于 2023-9-13 09:03
应该可以的。
大佬请写个demo测试下吧,99%的可能是没法hook这个方法的
chinamsu
发表于 2023-9-13 09:59
另外你说的GetFunctionPointer()无法获取准确地址的问题,我猜测是因为你在调用RuntimeHelpers.PrepareMethod时没有调用正确导致的,有泛型参数的时候你只传入一个MethodHandle是没法正确jit的。
可以:
var typeHandles = rawMethod.DeclaringType.GetGenericArguments().Select(t => t.TypeHandle).ToArray();
RuntimeHelpers.PrepareMethod(rawMethod.MethodHandle, typeHandles);
rawMethodPtr = (byte*)rawMethod.MethodHandle.GetFunctionPointer().ToPointer();
这样来获取,因为我不会使用windbg所以没法验证
chinamsu
发表于 2023-9-13 10:01
另外你说的GetFunctionPointer()无法获取正确的方法地址,我猜测是因为你前面PrepareMethod没有正确调用导致的,方法有泛型参数时不能只传入一个MethodHandle,可以尝试下面这样:
var typeHandles = rawMethod.DeclaringType.GetGenericArguments().Select(t => t.TypeHandle).ToArray();
RuntimeHelpers.PrepareMethod(rawMethod.MethodHandle, typeHandles);
rawMethodPtr = (byte*)rawMethod.MethodHandle.GetFunctionPointer().ToPointer();
我不会windbg没法验证,欢迎大佬来测试下
壹佰
发表于 2023-9-13 10:56
chinamsu 发表于 2023-9-13 09:47
大佬请写个demo测试下吧,99%的可能是没法hook这个方法的
加w叩2.5.2.5.0.2.5.6.8
易木
发表于 2023-9-13 17:54
感谢分享!好人一生平安!
热爱汇编学习
发表于 2023-9-21 08:44
学习一下IL
zsl847
发表于 2023-9-22 05:18
这个可以啊
爱娜生
发表于 2023-9-22 16:34
回帖看内容
koalamm638
发表于 2023-9-23 23:03
这个厉害了。