c - 如何在外部程序中使用通过内存扫描器发现的数据?

标签 c assembly

那么,一些背景知识:我正在使用一个名为 cheat engine 的内存扫描器在我试图为其制作机器人的非开源视频游戏中获取游戏统计数据(例如 hp、mana、exp)的实时值。

为了让我的机器人有效地使用这些信息,我需要及时将它从 Cheat Engine (或任何具有类似功能的内存扫描器)获取到我的机器人代码中。

现在,一种显而易见的方法是将所有信息保存到一个文件中,然后在我的机器人代码中加载该文件,但由于此数据大约每半秒左右需要更新一次,因此这不是真正的解决方案。

我真正需要的要么是一个非常方便的内存扫描器,它允许您将发现的信息用作某些编程语言(最好是 java、c 或 matlab)中的一组变量,要么是一种访问内存地址的方法以上述语言之一找到。

后一种选择应该是可行的,因为 Cheat Engine 会提供内存地址、控制进程 ID 和数据类型。

最佳答案

这个问题没有简单的答案。据我所知,您对这个领域还很陌生,所以您真正需要的是对该主题的适当介绍,为此我建议阅读 Exploiting Online Games: Cheating Massively Distributed Systems .

这是一本很棒的书,它以详细的方式展示了游戏技巧的工作原理,并且用整章的篇幅讲述了如何构建机器人

如果你想编写一个应用程序来读取/写入数据到这些内存地址,你需要研究像ReadProcessMemory()这样的函数。和 WriteProcessMemory() .无论您选择哪种语言来实现您的机器人,都需要提供对 Windows API 的访问。这是必需的,因为您必须操纵另一个进程的内存空间。

There are lotstutorials那里显示了如何使用 CC++ 来完成此操作,因为它们是执行此类操作的首选语言。另一种选择是使用 macro tool如果你想要一些简单的东西 play the game for you .

现代电脑游戏实现了自己的反作弊机制,让像(和我)这样的人更难上手。自 this book介绍了攻击和防御技术,我将它推荐给任何对如何利用计算机游戏感兴趣的人。 这本书充满了代码示例

我很抱歉没有提供更多信息,但我过去曾因帮助人们满足你的好奇心而受到批评,而且我也永远不会比本书的作者更好地解释如何做这些事情。

关于c - 如何在外部程序中使用通过内存扫描器发现的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7262013/

相关文章:

c++ - 如何解决忙等待许多正在运行的线程

字符串以某种方式发生变异

相同算法的 Java 与 C 版本

c - 如何使多个 `fork()` -ed 进程使用共享内存进行通信?

assembly - 如何在Proteus设计中添加代码

c - SSE指令MOVSD(扩展:x86,x86-64上的浮点标量和 vector 运算)

c - Simpletron 机器和间接寻址

c - 矩阵加/乘的 pthread 加速

c - 编译器是否读取代码并优化随机内存分配?

assembly - 如何在AVR中产生占空比为20%的PWM脉冲?