Tibia 是一款通过 C++ 客户端运行的在线多人游戏(图片)。有一些作弊工具可以让你改变角色的外观,当你的 HP 达到某个点时使用恢复项目,甚至可以在没有美感的情况下描绘地图(图片)。
这些软件如何访问 Tibia 使用的内部存储器,以及它们如何确定特定信息的存储位置?
您可能知道,应用程序的所有指令/数据都保存在内存中的特定偏移处,通常由编译器设置。使用调试器/反汇编器(例如 ollydbg)或内存“搜索器”(例如 CheatEngine),您可以查看这些。一个简单的过程是在内存中搜索给定值(例如游戏健康),然后通过游戏动态对其进行更改并重复搜索,直到您获得所讨论值的内存地址,这通常是静态的,即:不会改变直到可执行文件得到更新。(实际上,ASLR 等技术用于随机化,但可以规避)
现在使用获得的地址,您可以生成一个处理程序,通过使用 Windows API 执行鼠标点击/击键或通过调用游戏内函数来处理它,这些地址和参数也可以通过调试找到。(例如:如果健康<50%,调用这个函数)
另一种方法是使用代理,通过该代理路由所有流量,您可以在其中注入传出数据包以执行操作,或解析传入数据包以推断条件。
显然,我无法提供示例代码,但您可以从阅读逆向工程基础知识和数据包嗅探开始,然后通过解决crackmes 和遵循诸如CheatEngine 论坛上的单人游戏作弊教程进行练习。
您还可以查看此聊天日志,了解有关机器人和对策的信息,如向非程序员解释的那样:http://pastebin.com/6WWif7gK ( 开始于:20)