日期:2014-05-17  浏览次数:20888 次

C# 如何把委托函数的地址写到byte数组里面?
写一个函数的hook,找不到资料,代码如下:

IntPtr P = Marshal.GetFunctionPointerForDelegate(new HookProc(myFunc));

ptr=???

HookBytes[0] = 0x68;
Marshal.Copy(ptr, HookBytes, 1, 4);
HookBytes[5] = 0xC3;


我的理解,ptr应该是指向P的实际内容的 IntPtr 吧

如果不用unsafe的话,怎么把IntPtr P的指向函数的地址的数值,写到HookBytes里面呢?

------解决方案--------------------
IntPtr已经很简单了,就是包装了一个整数
byte[] ps = BitConverter.GetBytes(p.ToInt32())
Array.Copy(...)