[教學] 手機遊戲 apk 檔修改基礎介紹與思路


本篇簡單介紹修改手機遊戲 apk 的工具以及方法
只適用於 Unity 等非原生開發的遊戲(mono framework)

嗨,大家好久不見,已經一年多沒寫教學文了吧,這次的教學只是給沒有概念的新手入門,以及一些工具的介紹,所以如果已經會的大大可以看看我有沒有講錯甚麼在下面留言提醒一下 XD

其實網路上已經有很多類似的教學文,畢竟神魔之塔也是很紅,那時候出了很多外掛,所以後來相關教學網路上也都有,例如這個:神魔之塔.502.不死修改教程白貓DLL修改基礎教學,適合新手

這些不是我拍的影片也不是我寫的文,不過我想如果這篇文章看不懂也可以參考人家的教學看看別人怎麼做的。


在開始之前我們要準備一些東西


上面這幾個都是免費或者開源的工具,APK-Multi-Tool 網路上也有人翻譯的中文版可以去找,也有人不是用 Reflexil 這個套件而是用 ilasm & ildasm 比較原生的工具,不過看你啦,用的順手就好。

為什麼要會 C# 跟 IL Code?因為其實 Unity 就是用 C# 在寫,因為有 mono project 所以可以在手機上執行,不過其實遊戲的本體還是 C# 所以我們要改遊戲當然就得了解他的語言。

首先,要先確定要修改的 apk 是使用 Unity 寫的,怎麼看呢?其實很明顯,先用 WinRAR 或者 7-zip 打開 APK 檔案,這邊使用上次那篇 DMM.R18 天衣創聖 1.0.19 修改版 裡的原始 APK 檔做示範:


當你看到在 \assets\bin\Data\Managed\ 底下有一堆 dll 時基本上就有九成九的把握了。


使用 APK-Multi-Tool 解壓縮之後(用這工具解壓縮純粹只是因為方便等等打包重新簽名)找到要修改的檔案,通常就是 Assembly-CSharp.dll 這個檔案,不過有一些其他的東西(例如加密)會在其他的 dll 裡面,要找(或者靠經驗)。


把檔案丟進 ILSpy 裡面看,你必須要有一些基本的概念才能看懂,大部分遊戲都沒有防護意識,沒有將程式碼混淆,所以我們可以透過函數名稱快速了解程式大致上的邏輯,在這邊我是先看到了 sg.battle 裡面的 DamageText 這個類別,裡面有一個 ApplyDamage 感覺就是負責傷害顯示的函數。


透過 Analyze 你可以快速找到誰調用了這個函數,然後就會在 EnemyInfo 這個類別下找到 ApplyDamage,那這個感覺上就是管怪物受到的傷害的了,由於我本來就只打算改攻擊力所以就沒再去看其他地方,那像是你想改腳色損寫降低之類的可以去看看 CharaInfo 這個類別。


按工具列的齒輪叫出 Reflexil 可以看到右下角的修改工具,你可以像我一樣直接新增 ILCode 進去,或者乾脆整個 class 重寫。


存檔之後把他覆蓋掉原本的 dll 然後回到 APK-Multi-Tool,我們要把它重新打包簽名
直接用工具第七的選項即可,完成後你就會拿到你熱騰騰剛修改好的 apk 囉~

同學們,我們下次再見,bye~bye~



本月最夯