免越獄 ShootMoon.app 逆向
本文于 1107 天之前發表,文章内容可能已經過時。
免越獄 ShootMoon.app 逆向、修改
輸出 IPA

使用Hopper Disassembler
啟動Hopper Disassembler,選單中選擇File->Read Executable to Disassembler…,或者按下快捷鍵Command+Shift+O,彈出的對話框中選擇 shootthemoon 文件,再點擊OK。
緊接著會彈出如下圖所示的對話框,保持默認選項,點擊OK。

分析與實現
找到 GamePlay Class,發現他有一個方法是 updateScore,
我們先對這方法 hook,嘗試看看

這邊我們使用 CaptainHook 來撰寫Hook方法,
接著回到遊戲體驗一下,發現這樣的方法,只要射擊到月亮,就直接結束遊戲了…

看一下 method updateScore 反編譯結果,發現他呼叫了一個 ohHoHo 方法,也是在同一個 Class 底下,這邊經驗告述我們,傳進來的參數 arg2 != 0,就進到這個 if 中!
八九不離十,這應該是最終更新分數的方法

在查看一下這方法,對他進行 hook
發現確實跟我們想的一樣

最終我們完成修改,為了不讓遊戲體驗變得太糟,我們讓原本分數乘10,並調用加時間,能避免一次就過關了…


總結
這個逆向工程,主要是為了練習 CaptainHook 的使用與寫法,logos 寫法在 Xcode 中無法模糊輸入,沒記下所有的code確實會很礙事…