开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1489|回复: 3
收起左侧

[图文资料] Unity游戏安全逆向之重装机犬

[复制链接]
发表于 2021-9-13 01:28:24 | 显示全部楼层 |阅读模式   甘肃省天水市
本帖最后由 肥蛋仔 于 2021-9-13 10:46 编辑

abd1a08b80a4228b4582.jpg
重装机犬是一款Roguelite动作冒险游戏,本作是重装机兵MAX的衍生外传,这是这次玩家将会扮演狗狗在末日荒野上作战。战斗和探索主要采用的是富士佳ode形式,玩家可以操控的狗狗也非常多,能采用的武器也很丰富,你能在这个即时制战斗、且关卡比较随机的MM衍生作中得到足够多的乐趣。
       一只衰老的战犬碰到了一位神秘的老科学家。

故事发生在富士山脚下支离破碎的世界中,猎杀系列中熟悉的怪物!在系列30周年纪念新作中,您玩家将可以享受独特的世界观以及与该系列正传不同的简单操作。

《重装机兵》系列:背景设定在后启示录世界时代,玩家可以乘坐属于文明遗迹的“坦克”,在不同的地方追捕被通缉的怪物(获得悬赏),并使用奖励来改装自己的坦克。

这款Roguelike动作游戏是最新主机游戏《重装机兵Xeno:重生》的续作,它讲述了战斗犬Pochi的故事。


作为忠实的重装系列粉,终于终于等到了波奇当主角.......鉴于时间关系,我也微微修改了一下,速通了游戏,下面就重装机犬分享一下逆向过程
12.png

首先,你需要懂得一些知识点:
Unity是一个非常受小型独立游戏欢迎的游戏引擎,但是也有很多大型游戏在使用它。它是跨平台的,游戏可以针对PC (Windows、OSX、Linux)、移动(安卓/iOS)发布,甚至可以通过WebGL针对浏览器发布。它是免费的,使游戏开发非常容易,并使用C#或Javascript脚本引擎


当入侵一个普通的本地游戏时,你通常可以找到指针和偏移量并轻松使用它们。内存映射和可执行文件加载到内存的方式是可预测的,每次都遵循相同的模式,这就是PE文件格式和Windows加载程序的工作方式。但是攻击Unity游戏是不同的,因为像Unity这样的游戏引擎是大型基础设施,它们加载并运行实际游戏的开发者创建的游戏逻辑。他们有自己加载动态代码和数据的方法。游戏引擎增加了另一层抽象,并且经常利用大量的继承、重载和多态性,这使得反转它们和编写Unity黑客更加困难。

你会注意到的第一件事是,当你攻击Unity游戏时,你很难找到在重启游戏后有效的指针。因此,模式扫描和挂钩通常更容易。我不建议在编写Unity hacks时试图去追求多级指针。


第二件事你会看到的是,统一游戏的代码位于一个Assembly-CSharp.dll模块,而不是在主EXE。这样做的好处是,您可以轻松地使用dnSpy这是一个. NET反编译器/调试器。


静态分析
您可以使用. NET反编译程序静态分析游戏代码。你会看到结构和功能。请记住,所有的游戏引擎代码都不会在那里,这只是游戏逻辑。并非游戏使用的所有功能和结构都在Assembly-CSharp.dll。有时它会包含所有结构、变量和函数的名称。其他时候,开发者会把这些去掉或者混淆。即使去掉名字,也很容易逆向工程这样的功能。一些拆装器,如IDA,也可以让你反转。NET字节码,尽管这不会直接与内存中的游戏匹配,因为它将被及时(JIT)组装成x86代码,并且每次都会出现在内存中的不同位置。


总结一下,就是:
1.Unity游戏启动遵循的是设计者的逻辑,整体不会有太大的变动但是细节会有许多不同。(100个游戏100个逆向方法?)
2.Unity游戏每次进入游戏,进入关卡等都会从新定义血量,坐标等结构,所以,所以,所以,尽可能的不要去用指针扫描或者一层层的找多级指针,因为基本都不能用(重点)
3.逆向源码永远是最快捷的方式。

进入游戏,游戏是2.5D的,自带范围瞄准,大小地图,并未加相关验证,为了保证游戏的可玩性,我们从角色属性,武器属性,技能,金钱等方面入手 1.png

选择出击,进入教学关卡,装备生锈的机枪,波奇有三个武器槽位,根据引擎结构,会有一个武器数组进行管理,我们从最简单的子弹数量入手,搜整数型,几颗子弹就搜几

我的调试环境为WIN7,WIN10环境下数据会有不同

4.png

如图,F5访问下断,跳到地址右键  访问了什么地址,得到枪械子弹数组

然后Ctrl+D内存分析 7DEB0730
5.png 3.png

两者进行对比得到
6.png


未完

DOGS.rar

2.56 KB, 下载次数: 5, 下载积分: 精币 -2 枚

评分

参与人数 1好评 +1 精币 +1 收起 理由
Nullauto + 1 + 1 很用心 叙述也不错 鼓励好评

查看全部评分


结帖率:94% (30/32)
发表于 2023-6-6 10:01:57 | 显示全部楼层   河北省邯郸市
加油加油 期待看到後续更新
回复 支持 反对

使用道具 举报

发表于 2021-9-13 20:10:54 | 显示全部楼层   台湾省高雄市
加油加油
期待看到後续更新
回复 支持 反对

使用道具 举报

结帖率:93% (41/44)
发表于 2021-9-13 12:44:17 | 显示全部楼层   安徽省滁州市
直接修改unity的C++反编译代码就行了 还用CE多此一举啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表