1-12章
因为我读这本书的初衷是研究native层的注入和hook技术,并不十分关注游戏外挂本身,而且我已经有一定的逆向经验,所以这部分我只是大致看了看外挂的种类和游戏漏洞的风险点。
需要学习的语言
在逆向分析中主要掌握的是ARM、c、c++、oc,但是除此之外,android软件经常使用的java以及smali代码,还有U3D主逻辑使用的c#和IL代码,以及某些游戏会使用lua或py脚本来写主逻辑,遇到这些语言,只需要在遇到他们时能够读懂基本逻辑即可。
外挂技术——静态修改
如果已经了解游戏的关键逻辑代码的位置,就可以直接修改,针对不同的语言有不同的修改方式,如针对c#编写的逻辑,用ildasm反编译后,修改IL指令,然后通过ilasm编译成dll文件,替换原安装包中的即可。
外挂技术——动态修改
若游戏做了比较严格的完整性校验或签名校验,难以静态绕过,则可以考虑动态。
漏洞的实现原理
- 游戏逻辑漏洞
通过修改客户端的游戏来实现外挂功能,游戏逻辑漏洞与游戏网络交互关系密切,如果游戏的绝大部分逻辑在服务端实现,客户端只是同步结果,则这类强联网游戏的安全性较好。 - 游戏协议稳定型漏洞
协议稳定型漏洞是指构造畸形协议导致协议处理方在处理协议时出现崩溃的漏洞。
协议稳定型漏洞的挖掘过程实际上就是畸形协议的构造过程,而畸形协议字段的构造可考虑通过Fuzz工具的思想实现,对各类边缘值的测试。 - 游戏服务端校验疏忽型漏洞
本质上就是Web漏洞,服务端校验不严格。
手游的分类和风险点
99-104页
13章 注入技术的实现原理
ptrace注入技术的实现
整体流程
代码实例
Android.mk
1 | LOCAL_PATH := $(call my-dir) |
InjectModule.c
1 | /************************************************************ |
ptraceInject.h
1 | /************************************************************ |
ptraceInject.c
1 | /************************************************************ |