其實我以前還蠻喜歡嘗試去破解一些軟體或是修改遊戲來作弊,純粹是想挑戰一下從中獲得一些樂趣。

最近的一次嘗試是修改 iOS 上的 Final Fantasy II,這遊戲應該是我剛上國中的時候玩的吧,忘了因為什麼原因沒有把它破關,一直是心裡的一個遺憾,畢竟我是從 Final Fantasy I 就開始玩的老玩家了。所以如今 Square Enix 在 iOS 上把它重製,但我已經沒有那個閒功夫再重頭從等級 1 慢慢練了,所以最快的方法就是破解作弊啦。

要在 iOS 上進行遊戲的作弊破解有幾個前提:

  1. 首先你需要是一台已經 JB 過的 iPhone 或是 iPad,因為需要在 device 用 Cydia 上安裝 gdb 來追蹤遊戲的運行。
  2. 再來你需要有 ARM Assembly 的知識,因為要能看懂程序的邏輯然後做修改。
  3. 你需要會用反組譯的分析工作例如 IDA Pro
  4. 你必須會基本的 gdb 操作。

我用的方法大致跟 用iPhone修改及调试游戏作弊版教程 是一樣的:

  1. 在 device 上安裝 openssh 及 openssl
  2. 用 usbmuxd 裡的 python-client 透過 USB 跟 device 做 SSH 連線
  3. 我是用 iFile 把 FinalFantasy2.app 從手機抓出來用 IDA Pro 做靜態分析。
  4. 再來就是比較苦工的部份,要找出那一段是遊戲裡增加經驗值或是 HP 的地方,通常可以從 function 的名字來判斷,例如這個有 LV_UP 的 function 看起來就很像是處理等級提昇的地方:

反組譯後的程序

可能的地方

找到可能的地方了,連上 device 來做實驗看看,我通常是直接設定中斷點,然後把 register 的值改掉:

(gdb) break *0x2789e
(gdb) commands
>set $r3 = 100
>c
>end

其他的一些能力值也可以如法泡製,這樣就可以輕鬆玩啦:

作弊