所以,有些背景:我正在使用一个名为cheat engine的内存扫描程序来获取非开源视频游戏中游戏统计数据的实时值(例如hp,mana,exp)试图制作机器人。
为了让我的机器人有效地使用这些信息,我需要及时将欺骗引擎(或具有类似功能的任何内存扫描程序)从我的机器人代码中获取。
现在,一个显而易见的方法是将所有信息保存到文件中,然后在我的机器人代码中加载文件,但由于这些数据需要大约每半秒更新一次,这不是一个真正的解决方案。
我真正需要的是一个非常方便的内存扫描程序,它允许您在一些编程语言(最好是java,c或matlab)中使用您发现的信息作为一组变量,或者一种访问内存地址的方法发现有上述语言之一。
后一个选项应该是可行的,因为作弊引擎提供了内存地址,控制进程ID和数据类型。
答案 0 :(得分:10)
这个问题没有一个简单的答案。据我所知,你对这个领域很新,所以你真正需要的是对该主题的正确的介绍,为此,我建议阅读Exploiting Online Games: Cheating Massively Distributed Systems。
这是一本很棒的书,它以一种详细的方式展示了游戏黑客的工作方式,并且它专门用了整章来介绍如何构建僵尸程序。
如果要编写应用程序以读取/写入这些内存地址的数据,则需要调查ReadProcessMemory()和WriteProcessMemory()等函数。无论您选择何种语言来实现机器人,都需要提供对Windows API的访问权限。这是必需的,因为你必须操纵另一个进程的内存空间。
There的are lots tutorials显示如何使用 C 和 C ++ 执行此操作因为他们是做这种东西的首选语言。另一种选择是使用macro tool,如果你想要一些简单的play the game for you。现代计算机游戏实施了自己的反作弊机制,使像你(和我)这样的人更加困难。由于this book提出了攻击和防御技术,我建议任何对如何利用计算机游戏感兴趣的人。 这本书充满了代码示例。
我很抱歉没有提供更多信息,但过去曾因为好奇心帮助别人而受到批评,我也绝不会比书中的作者解释如何做这些事情做得更好。
答案 1 :(得分:0)
答案 2 :(得分:0)
答案 3 :(得分:0)
您需要使用调试库来执行此操作。您可以在变量的位置设置一个观察点,当它触发时,您将获得其值。
scanmem
为Linux做了这个。
不幸的是,许多封闭源游戏都不遗余力地避免使用调试器,所以这不会对你的游戏产生影响。
答案 4 :(得分:0)
你试过Visual VM吗?
答案 5 :(得分:0)
Cheat Engine是开源的,所以你要做的是查看Cheat Engine的源代码,看看内存转储是如何工作的。
然而,监视一个你没有控制的实时进程是非常重要的,所以除非你是11级的黑帽代码向导,否则我怀疑它不起作用。
即使你说你想要查看一些可以猜测内存转储的整数,但要以编程方式,一致地找到该区域要困难得多,同时可能会因为数据被复制或者复制而频繁地进行重新跟踪。当程序状态发生变化时移动。
另请阅读Cheat Engines常见问题解答中这一令人鼓舞的引用:
问:Cheat Engine会在网络游戏上运作吗?
答:大部分时间都没有
但无论如何,尝试一下 - 这听起来很有趣,我相信你会学到一些东西,并且你总有机会让它发挥作用: - )