【问题标题】:C++: How do applications like Cheat Engine and ArtMoney work?C++:Cheat Engine 和 ArtMoney 等应用程序如何工作?
【发布时间】:2010-06-04 17:02:47
【问题描述】:

询问this question (C++: Can I get out of the bounds of my app’s memory with a pointer?)后,
我决定接受无法使用指针(使用现代操作系统)修改其他应用程序的内存。

但如果这不可能,像ArtMoney 和CheatEngine 这样的程序如何工作?

谢谢

【问题讨论】:

    标签: c++ memory-management


    【解决方案1】:

    检查这些功能: ReadProcessmemory WriteProcessmemory

    【讨论】:

      【解决方案2】:

      可以在 Windows 上读取进程内存。在kernel32.dll中有一个函数,叫做ReadProcessMemory:http://msdn.microsoft.com/en-us/library/ms680553(v=VS.85).aspx

      大多数应用程序都会使用它来更改其他应用程序的内存。它也可以用来在两个进程之间进行通信(尽管大多数情况下不推荐)。

      CheatEngine 是一个非传统接口的调试器。

      【讨论】:

        【解决方案3】:

        只是给一个简单的解释 - 转储/热搜指定值的进程内存并修改它。您可以使用一些普通的 WinAPI 函数或使用一些 native API 例程(我想是这样)。

        这显然是它们失败的原因,例如,如果游戏状态以某种加密方式存储。这也是您需要多次更改值然后再次进行搜索的原因(以避免搜索冲突,因为不同的内存块肯定可以保存相同的值)。

        【讨论】:

        • 显然它们也不适用于显示值不等于内存中存储值的情况,即显示x + 1,而x存储在内存中。搜索x + 1 不会产生x 的位置。其他加密方法使用自定义数据类型,如可变长度整数、不同的字节顺序、异或反转存储(与0xFFFF 进行异或)等。
        猜你喜欢
        • 1970-01-01
        • 2020-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-24
        • 2016-01-30
        • 1970-01-01
        相关资源
        最近更新 更多