发布于:2018-11-16 18:26 | 171674次阅读 作者: 管理员 | 原作者: TP
1. SystemCheats外挂呈现平台主要针对FPS类游戏,也有其他沙盒和开放世界类等游戏的外挂。 SystemCheats支持的游戏外挂如下图所示。 2. 外挂具有较强的反分析和反检测能力,外挂会监控自己是否被分析,如果被分析则会直接封禁外挂帐号以及当前使用的机器。 3. SystemCheats具有较好外挂玩家售后论坛,玩家可以在论坛上咨询外挂使用情况等。 4. 本文是以BO4插件功能实习为例进行分析,SystemCheats外挂是游戏内读取角色、装备等数据,具有自动瞄准、角色透视、3D雷达和2D雷达等功能。
分析结论:1、外挂从后台下载带正规签名的驱动和加密的Shellcode; 2、外挂向游戏内注入868KB大小的Shellcode用于读取游戏数据、绘制方框和自瞄等功能; 3、外挂修改CDXGISwapChain的Present和ResizeBuffers两个虚表函数地址,用于获得执行时机绘制方框和游戏武器等信息; 4、外挂修改了游戏的CreateThread、GetCursorPos、SetCursorPos和GetForegroundWindow四个函数IAT地址,当游戏调用CreateThread且栈大小为4096时外挂感知对局开始开启功能,当游戏GetForegroundWindow函数时外挂判断返回地址为某个地址时执行获取角色、装备等数据的逻辑;
外挂功能分析外挂与后台服务器登录流程如下: 1、 外挂向后台服务器发送机器和帐号密码信息; 2、 服务向外挂客户端下发支持的游戏列表; 3、 外挂客户端选择想要加载的游戏ID; 4、 服务器向外挂下发加密的Shellcode和驱动文件。 可以从外挂服务器下发的配置文件看出,BO4游戏需要注入的进程为BlackOps4.exe,注入延迟为7000. 外挂服务器下发的驱动具有正规签名。
分析过程1. 外挂Shellcode实体外挂注入到游戏内的Shellcode大小为868KB,如下所示。 2. DXGI模块的虚表修改外挂首先通过特征码搜索到CDXGISwapChain::Present函数地址,然后修改opcode跳转到外挂的Fake_CDXGISwapChain::Present函数里。 在外挂的Fake_CDXGISwapChain::Present函数中外挂修改虚表中CDXGISwapChain::Present和CDXGISwapChain::ResizeBuffers两个函数地址。 外挂修改完虚表之后,恢复CDXGISwapChain::Present函数的opcode防止代码完整性校验。 外挂会在调用Fake_CDXGISwapChain::Present游戏时候获取当前本地时间、FPS帧率以及分辨率并绘制到游戏屏幕上。 外挂在游戏调用Fake_CDXGISwapChain::Present函数时将获取到的游戏entity坐标转换成屏幕坐标并绘制到游戏屏幕上。 3. 游戏IAT修改外挂会搜寻游戏内CreateThread、GetCursorPos、SetCursorPos和GetForegroundWindow四个函数的IAT地址并且Hook。 外挂会感知游戏创建线程栈大小,当线程栈大小为4096时外挂设置相应标志位。当感知到该线程的创建时,外挂设置0x24653ec和0x24653e8两个标志,这个标志表示着游戏进入对局。 当执行GetForegroundWindow函数,返回地址符合某种条件时候会执行方框透视的游戏数据获取逻辑。 4. 外挂获取游戏数据的逻辑分析外挂会调用游戏函数0x13FCE57C0、0x13FAC1C20函数获取游戏Entity,并判断是是不是游戏内的头盔、枪等道具,并获得坐标并在调用Present函数时候绘制到游戏屏幕上。 如下图所示,外挂读取0x147ba6e54在游戏内对应为helmet。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) |
最新评论
发表评论