我需要从内存位置0到3个字节获取值,假设int使用4个字节的数据,如果long使用8个字节, 我想读取0到7个字节作为长数据并查看它返回的值。 任何人都可以帮我使用C#代码。
此致 VIX
答案 0 :(得分:1)
这可能非常危险,如何获取地址以及您如何评估它是否有效?并非每个地址都有效,并且尝试从其中一些地址读取将导致例外。
但你可以使用Marshal.Read*方法来做到这一点。
int intValue = Marshal.ReadInt32(addr);
long longValue = Marshal.ReadInt64(addr);
您还需要捕获AccessViolationException。
您也尝试从虚拟地址或物理内存中读取数据。从C#开始,您只能阅读流程的virtual address space。您必须使用内核模式驱动程序才能直接访问计算机上的物理内存。