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