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