认识unity
打包目录结构
dll一般很大,因为里面是所有的游戏功能编译成的二进制码
游戏逆向流程
开发人员代码被编译打包到GameAssembly.dll中
使用il2ppDumper工具,并借助游戏名
_Data\il2cpp_data\Metadata\global-metadata.dat恢复符号
使用IDA对该dII进行反编译
分析核心逻辑实现的代码(相对Mono困难)
根据分析结果对代码进行patch,实现某种变态功能.
Unity游戏攻击面
数值修改
锁血
飞天
无限金币
攻击力翻倍
离谱功能
透视
自瞄
压枪
瞬移
内购破解
可被攻击原因
Unity引擎打包方式成为了外挂开发的帮凶!
mono的打包
C# 是解释型的语言–支持反射-----这个缺陷,可以非常容易恢复打包的函数名,变量名
建议方案
锁血
CE来搜索数值,去确定血量的变量
然后把他固定
用IDA分析血量减(sub)的指令,给他nop掉,就不会扣血
飞天
管人物的高是z这个变量,不停修改人物处在的位置,CE 走坡,走底,锁定Z的变量
无限金币
数字修改,就是内存挂
大同小异,和前面的
去覆盖金币的变量
攻击力翻倍
找到攻击力是哪个变量,去更改攻击力
以上统称内存挂
内存就比如说无后,X特效,广角,不过内存都容易封
透视
去读内存里的数据
自瞄
去找人物的骨骼系统,把准星设置到骨骼就是自瞄了
压枪
看枪后座的实现,可能是一个浮点类型的变量,根据手按左键的时间影响弹道轨迹
瞬移
存在传送的功能,实现了一个传送的函数,调用了就可以
有的直接修改人物坐标
内购破解
找到联网支付的模块在那里,根据返回值判断是否购买,把相应的那一块做一下patch
这是以前的方法,比如滑雪大冒险一样的游戏
Unity游戏防御
开发时注意数据安全
接入第三方反作弊系统
TP
EAC(Easy Anti Cheat)
VAC(Valve AntiCheat)-----------CSGO用
Battleye Anticheat
easy-anticheat 好像是直接扫内存吧
外挂检测思路
符号混淆
变量值混淆
文件完整性校验
调试器检测、阻止调试器附加—无法动态分析了
检测内存编辑工具(Cheat Engine等)
基于签名的内存完整性检测
检测dII注入----常见,外挂都是写成个DLL
检测APIHook----比如透视,hook 一下图形API的函数,可以通过检测常用的函数是否被hook
封锁内存读写----不让在应用层读写内存,上驱动保护的那种
统计异常检测------统计一段时间内游戏崩溃多少次
狠人自爆
实战
查看目录结构
看到unityplayer
猜测打包方式,看Data里面猜测是il2cpp
用il2cpp dumper
把游戏拖进去
搜索getflag
用框架脚本
mono打包方式
例子2-森林
用il2cppDumper去分析
who is he
mono打包方式,就跟源码差不多
相当于看到源码
后记
推荐阅读:r3kapig:校园明星ctf 战队的奇幻养成之旅文章来源:https://www.toymoban.com/news/detail-407490.html
🌸I could be bounded in a nutshell and count myself a king of infinite space.
特别鸣谢:木芯工作室 、Ivan from Russia
文章来源地址https://www.toymoban.com/news/detail-407490.html
到了这里,关于【Unity游戏破解】外挂原理分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!