Heara.in

Game Hacking的三种境界

2019 M08 23 • ☕️ 2 分钟阅读

1.面向GUI自动化

第一境界,是面向GUI的自动化,这种hack方式主要是采用图像识别技术,查找对象的关键特征,比如在MMORPG中,如果要做一个Bot完成自动刷钱的功能,采用这种实现方式往往是首先找到怪物的标志特征,比如眼睛什么颜色,名字之类的,然后接住图像识别技术定位目标怪物,接着利用Windows API模拟鼠标移动、点击。

优点: 简单易学

缺点: 难以实现复杂功能

2.读写内存&函数调用

第二境界,是通过读写内存和函数调用来实现的。这种方式主要通过类似Cheat Engine、OD、 IDA等逆向工具,在内存中查找关键的值,找出相关的函数调用,分析函数调用栈和入参,最后通过DLL注入等方式实现Bot。举例来说如果想要获取一个怪物对象的属性,首先通过Cheat Engine找到内存地址,然后找到修改血量的指令,通常情况下就可以找到怪物的基地址,然后分析每个BYTE WORD DWORD都代表着怪物的什属性,沿着修改血量的指令栈一直向上回溯,必然会找到攻击的函数。

优点: 可靠、稳定、可以实现复杂功能

缺点: 需要比较强的汇编和逆向能力

3.模拟发包

第三境界,模拟发包。我们知道对于MMO来说必然涉及了客户端和服务端的数据交互,而每一条数据必然都是有其含义的。那条数据是心跳包,那条数据是控制玩家移动,那条数据是攻击某个怪物…等等这些必然有着一对一的关系,因此关键问题在于搞清楚数据和指令的对应关系。如何搞清楚对应关系呢?一种方法是逆向,这种情况下我们也需要用到上述的逆向工具,客户端代码里一般会有一个专门的包处理函数,用switch case语句来处理不同的数据,到汇编里就是跳转表了。另外一种就是利用WPE、Wireshark等工具抓包分析。往往要结合两种方式来实现。一旦我们找到了不同指令和含义和对应的数据结构,那我们就可以通过DLL注入等方式获取socketId,创建子线程,在子线程里调用发包来实现Bot功能。

优点: 功能强,稳定

缺点: 工作量大、需要比较强的汇编和逆向能力、加密数据处理难度大

总结

以上几中方式,并不是说那个最好那个不好,对于简单的自动化GUI就可以实现没必要去逆向,而如果要构建复杂功能,我们往往需要更加深入一点。