游戏外挂分析之注入篇

admin 2024年12月16日13:56:52评论26 views字数 1014阅读3分22秒阅读模式
 

01

以透视为例

透视外挂的目的是让玩家可以看到被遮挡的物体或敌人,例如通过墙壁、地形或障碍物看到对方。

通过DLL注入,外挂能够直接操控游戏的渲染,引擎可能会将所有物体(墙壁、障碍物等)变得透明,或者以某种方式“穿透”墙壁,让玩家看到背后的敌人或物品。

以开源射击游戏AssaultCube为例,正常情况下打游戏与注入dll之后的分别如下图。

游戏外挂分析之注入篇
注入dll后,可以透过墙壁发现敌方目标,并且绘制了边框和目标连线。

游戏外挂分析之注入篇
02

如何分析外挂程序所注入的dll文件

静态分析

使用ida加载该dll文件,加载后在imports中检查dll所依赖的系统库和API函数,主要留意进程控制(CreateRemoteThread,OpenProcess)、内存操作(VirtualAllocEx,WriteProcessMemory,ReadProcessMemory)、图形渲染(Direct3D,OpenGL)相关的函数调用。

游戏外挂分析之注入篇
再分析dll文件的入口点,主要的入口函数为DllMain,查看其逻辑结构,分析是否有钩子函数或线程创建的代码;后续可以分析dll文件中的字符串,或直接从入口点逐层追踪调用链。

注入开源射击游戏的dll文件入口点如下图,在IDA中点击F5查看反编译后的代码,可以知道该入口主要的作用是在DLL被加载时进行初始化,处理一些与内存、线程相关的操作,并根据传入的参数执行相应的任务。

游戏外挂分析之注入篇
使用FindWindowA函数查找名为“AssaultCube”的窗口,再调用GetWindowInfo获取窗口的信息。

游戏外挂分析之注入篇
使用GetModuleHandleA获取游戏客户端的基地址(ac_client.exe),用于进一步的内存读取操作。

游戏外挂分析之注入篇
将世界坐标转换为屏幕坐标,用于在屏幕上绘制玩家的位置。

游戏外挂分析之注入篇
绘制矩形框,表示该玩家的头像和身体。

游戏外挂分析之注入篇

动态分析

使用调试器(如x64dbg)启动游戏进程,加载外挂DLL,在DllMain或其他导出的初始化函数处设置断点,动态跟踪DLL是否修改游戏内存数据;在游戏渲染相关的API调用(如DirectX的DrawIndexedPrimitive)处设置断点,查看DLL是否修改了渲染逻辑。

通过DLL注入,游戏外挂能够直接操控游戏的内存和渲染流程,实现透视、自瞄、无后座力等作弊功能,对于这类外挂的分析,静态分析和动态调试是关键方法,遇到此类外挂程序的案件可联系我司协助分析。

 

原文始发于微信公众号(网络安全与取证研究):游戏外挂分析之注入篇

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月16日13:56:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   游戏外挂分析之注入篇https://cn-sec.com/archives/3507915.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息