c#将大量内存写入文件,反之亦然

时间:2013-12-01 21:05:56

标签: c#

我想将一大块游戏内存复制到一个文件中作为备份。 我相信我必须使用filestream写入文件和内存流,再次从文件写入内存。

最好的方法是什么? 我得到0x140000000作为起始地址和0x14A8A8200(大小:0a8a8200) 这有点复制所以我不知道如何开始。

我想从开始到结束地址和文件流写入的字节数组?

提示和帮助非常感谢

编辑: 我注意到Cheat Engine有这个叫做保存/加载内存区域的功能

1 个答案:

答案 0 :(得分:1)

您需要p / invoke本机API才能执行此操作。该API为ReadProcessMemory。您无法从普通用户模式代码中读取内存,因为内存位于不同的进程中,因此受到虚拟内存系统的保护。因此,您需要来自操作系统的帮助,这就是ReadProcessMemory为您所做的事情。

您还需要获取该流程的句柄。请致电OpenProcess。您需要添加PROCESS_VM_READ才能使ReadProcessMemory的来电成功,如docs中所述:

  

句柄必须PROCESS_VM_READ访问该过程。

您对ReadProcessMemory的调用还需要一个指向存储返回缓冲区的内存块的指针。您可以使用Marshal.AllocHGlobal,也可以更轻松地分配字节数组并固定它。

相关问题