我正在尝试在 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);
}