写一个函数的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里面呢?

解决方案 »

  1.   

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

  2.   

    拷贝到另一个数组的第二个字节怎么写?
    Array.Copy(ps,HookBytes[1],4)   这么写可以吗? 
      

  3.   

    Buffer.BlockCopy(ps, 0, HookBytes,1, 4);这么写可以吧
      

  4.   

    Array.Copy(ps, 0,HookBytes, 1,4);都是字节数组,复制4个字节,是这么写吧
      

  5.   

    Array.Copy 怎么用都要问几遍,你的自学能力也太差了,开发环境里非常全面的注释不会看吗