0x6.U3D游戏修改分析实战
本文介绍mono框架安卓Unity3D游戏的简单修改,提纲如下:
-->文中的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文件夹打包运行即可,此处不再演示,请大家自己尝试。