0x6.U3D游戏修改分析实战

0x6.U3D游戏修改分析实战


本文介绍mono框架安卓Unity3D游戏的简单修改,提纲如下:



这次我们采用的样本是在第三节【逆向初体验】中的样本, 网盘链接 https://pan.baidu.com/s/1dvM7O6  密码: rpgt
-->文中的apk修改仅用于研究学习,如涉及权益侵犯请随时联系处理。 <--

第三节中已经讲过反编译与回编译,所以本节不再赘述这两部分内容。下面分确认脚本、反编译/回编译脚本、修改脚本三部分进行讲解。

0x1.确认脚本
mono架构的Unity3D游戏的主要脚本主要存放在Assembly-CSharp.dll或者Assembly-CSharp-firstpass.dll中。路径为:



一般情况下,两个文件中较大的为我们要找的主要脚本,部分apk中只有 Assembly-CSharp.dll。

0x2.反编译/回编译脚本
.NET架构dll的反编译回编译工具有很多,本文使用的是最原始的工具 ildasm及ilasm【已上传至附件】。
(需要安装.NET Framework,请根据个人电脑配置情况安装,如果缺少某dll请自行下载补全)

2.1 ildasm反编译工具
用ildasm打开该apk的脚本文件 Assembly-CSharp.dll,打开后进行dump,File --> Dump --> OK,命名为conglin后等待dump完成。
这时我们的到了一个il文件和一个res文件,这个就是反编译后的il中间语言文件。

2.2ilasm回编译工具
完成修改后,需要使用ilasm进行回编译,重新打包生成dll文件。命令如下: 
 ilasm /dll /resource=conglin.res conglin.il
命令如果无效请使用标准命令
 ilasm conglin.il /dll /output:conglin.dll
编译完成后,将dll重命名为原本名字 Assembly-CSharp.dll放回到Managed文件夹,编译apk运行即可。

0x3.修改脚本
本apk本身对于金条数量已经有修改,数量为100100,我们现在着手查找一下这个修改的位置。

                           

此修改位置的查找我们需要在conglin.il中进行,搜索100100,如果没有结果,我们则搜索其16进制数0x18704,结果如下:



我们将其修改为999999的十六进制,即0xf423f,保存,然后使用ilasm进行回编译。
之后重命名放到Managed文件夹打包运行即可,此处不再演示,请大家自己尝试。