0x6.U3D游戲修改分析實戰(zhàn)
本文介紹mono框架安卓Unity3D游戲的簡單修改,提綱如下:
-->文中的apk修改僅用于研究學(xué)習(xí),如涉及權(quán)益侵犯請隨時聯(lián)系處理。 <--
第三節(jié)中已經(jīng)講過反編譯與回編譯,所以本節(jié)不再贅述這兩部分內(nèi)容。下面分確認腳本、反編譯/回編譯腳本、修改腳本三部分進行講解。
0x1.確認腳本
mono架構(gòu)的Unity3D游戲的主要腳本主要存放在Assembly-CSharp.dll或者Assembly-CSharp-firstpass.dll中。路徑為:
一般情況下,兩個文件中較大的為我們要找的主要腳本,部分apk中只有
Assembly-CSharp.dll。
0x2.反編譯/回編譯腳本
.NET架構(gòu)dll的反編譯回編譯工具有很多,本文使用的是最原始的工具 ildasm及ilasm【已上傳至附件】。
(需要安裝.NET Framework,請根據(jù)個人電腦配置情況安裝,如果缺少某dll請自行下載補全)
2.1 ildasm反編譯工具
用ildasm打開該apk的腳本文件
Assembly-CSharp.dll,打開后進行dump,F(xiàn)ile --> Dump --> OK,命名為conglin后等待dump完成。
這時我們的到了一個il文件和一個res文件,這個就是反編譯后的il中間語言文件。
2.2ilasm回編譯工具
完成修改后,需要使用ilasm進行回編譯,重新打包生成dll文件。命令如下:
ilasm /dll /resource=conglin.res conglin.il
命令如果無效請使用標(biāo)準(zhǔn)命令
ilasm conglin.il /dll /output:conglin.dll
編譯完成后,將dll重命名為原本名字
Assembly-CSharp.dll放回到Managed文件夾,編譯apk運行即可。
0x3.修改腳本
本apk本身對于金條數(shù)量已經(jīng)有修改,數(shù)量為100100,我們現(xiàn)在著手查找一下這個修改的位置。
此修改位置的查找我們需要在conglin.il中進行,搜索100100,如果沒有結(jié)果,我們則搜索其16進制數(shù)0x18704,結(jié)果如下:
我們將其修改為999999的十六進制,即0xf423f,保存,然后使用ilasm進行回編譯。
之后重命名放到Managed文件夾打包運行即可,此處不再演示,請大家自己嘗試。