【问题标题】:User-space memory editing programs用户空间内存编辑程序
【发布时间】:2011-05-04 05:25:39
【问题描述】:

编辑其他进程内存的程序如何工作,例如 Cheat EngineiHaxGamez?我的理解是,从另一个进程的内存读取(更不用说写入)的进程是分段错误的直接原因。

【问题讨论】:

  • 您提到“作弊引擎”——这是否意味着您只对 Windows 感兴趣?
  • 迂腐,但我想指出“分段错误”实际上并不意味着“任何内存错误”。
  • 其实我对 Linux 最感兴趣。

标签: linux memory operating-system


【解决方案1】:

操作系统的硬件抽象层通常提供函数来操作其他进程的内存。在Windows中,对应的函数是ReadProcessMemoryWriteProcessMemory

【讨论】:

    【解决方案2】:

    在 linux 下获得对另一个进程内存的访问相当简单(假设您有足够的用户权限)。

    例如文件/dev/mem将提供对整个cpu内存空间的访问。单个进程的映射详细信息可以在/proc/<pid>/maps 中找到。

    另一个例子已经给出here

    【讨论】:

    • /dev/mem 不会很有用,即使在检查 /proc/pid/maps 或 /proc/pid/pagemap 以找出访问位置时也是如此。您可能想要的是 /proc/pid/mem ,它是进程的虚拟内存而不是物理内存。
    【解决方案3】:

    您可以使用 WinAPI WriteProcessMemory 写入其他进程的内存空间。

    还可以阅读一些 PE/COFF 文档并使用 VirtualQueryExReadProcessMemory 来了解要写什么以及在哪里写。

    【讨论】:

      【解决方案4】:

      没有理由进行段错误; OS (kernel, ...) API 用于编写。 当进程尝试以错误的方式(char[] 溢出)访问自己的内存时,从操作系统发生 Segfault(获取信号)。

      关于游戏:好吧,如果一个值存储在一个地址中,并且有时会被读取,那么它可以在下一次读取发生之前被修改。

      【讨论】:

        猜你喜欢
        • 2013-02-23
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        相关资源
        最近更新 更多