其實我以前還蠻喜歡嘗試去破解一些軟體或是修改遊戲來作弊,純粹是想挑戰一下從中獲得一些樂趣。
最近的一次嘗試是修改 iOS 上的 Final Fantasy II,這遊戲應該是我剛上國中的時候玩的吧,忘了因為什麼原因沒有把它破關,一直是心裡的一個遺憾,畢竟我是從 Final Fantasy I 就開始玩的老玩家了。所以如今 Square Enix 在 iOS 上把它重製,但我已經沒有那個閒功夫再重頭從等級 1 慢慢練了,所以最快的方法就是破解作弊啦。
要在 iOS 上進行遊戲的作弊破解有幾個前提:
- 首先你需要是一台已經 JB 過的 iPhone 或是 iPad,因為需要在 device 用 Cydia 上安裝 gdb 來追蹤遊戲的運行。
- 再來你需要有 ARM Assembly 的知識,因為要能看懂程序的邏輯然後做修改。
- 你需要會用反組譯的分析工作例如 IDA Pro。
- 你必須會基本的 gdb 操作。
我用的方法大致跟 用iPhone修改及调试游戏作弊版教程 是一樣的:
- 在 device 上安裝 openssh 及 openssl
- 用 usbmuxd 裡的 python-client 透過 USB 跟 device 做 SSH 連線
- 我是用 iFile 把 FinalFantasy2.app 從手機抓出來用 IDA Pro 做靜態分析。
- 再來就是比較苦工的部份,要找出那一段是遊戲裡增加經驗值或是 HP 的地方,通常可以從 function 的名字來判斷,例如這個有 LV_UP 的 function 看起來就很像是處理等級提昇的地方:
找到可能的地方了,連上 device 來做實驗看看,我通常是直接設定中斷點,然後把 register 的值改掉:
(gdb) break *0x2789e
(gdb) commands
>set $r3 = 100
>c
>end
其他的一些能力值也可以如法泡製,這樣就可以輕鬆玩啦: