0

我正在尝试在 C# 中做一些“memcpy”破解。我一直卡在这部分,因为它不会将 System.Type 转换为 byte*

    public unsafe void memcpy(byte* dest, object src, int length)
    {
        byte* nsrc;
        byte* ndst;
        nsrc = (byte*)((src.GetType())src);

    }

如您所见,我尝试获取对象的类型,然后将其转换为原始对象。

有任何想法吗?

更新:

也许使用序列化?

    private byte[] ObjectToByteArray(Object obj)
    {
        if(obj == null)
            return null;
        BinaryFormatter bf = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        bf.Serialize(ms, obj);
        return ms.ToArray();
    }

    private void memcpy(byte[] dest, int pos, object src, int len)
    {
        byte[] ba = ObjectToByteArray(src);
        Array.Copy(ObjectToByteArray(src), 0, dest, pos, len);
    }
4

2 回答 2

3

不清楚你想要什么,但也许这有帮助?

int yourInt32 = ...;
byte[] bitsFromInt32Value = BitConverter.GetBytes(yourInt32);

long yourInt64 = ...;
byte[] bitsFromInt64Value = BitConverter.GetBytes(yourInt64);
于 2013-07-06T16:17:02.943 回答
0

取自 msdn:

指针类型不继承自对象,并且指针类型和对象之间不存在转换。此外,装箱和拆箱不支持指针。但是,您可以在不同的指针类型之间以及指针类型和整数类型之间进行转换。

链接: http: //msdn.microsoft.com/en-us/library/y31yhkeb (v=vs.100).aspx

            int number = 200;

            unsafe
            {
                // Convert to byte:
                byte* p = (byte*)&number;
            }
于 2013-07-06T15:45:03.767 回答