0x6.U3D游戲修改分析實戰(zhàn)

0x6.U3D游戲修改分析實戰(zhàn)


本文介紹mono框架安卓Unity3D游戲的簡單修改,提綱如下:



這次我們采用的樣本是在第三節(jié)【逆向初體驗】中的樣本, 網(wǎng)盤鏈接 https://pan.baidu.com/s/1dvM7O6  密碼: rpgt
-->文中的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文件夾打包運行即可,此處不再演示,請大家自己嘗試。

?