遊戲逆向的前期準備

工具

  • IDA pro
    這個就不解釋了,至於爲什麼不用Hopper,後面會看到需要IDA來執行python腳本,給函數綁定符號
  • ida pro的牛逼插件keypatch
    用於修改彙編代碼 https://github.com/keystone-engine/keypatch
  • Il2CppDumper
    Unity轉換成IL2CPP的符號表提取工具,但是隻能在Windows運行。 https://github.com/Perfare/Il2CppDumper/releases
  • 越獄手機
    用於砸殼

過程

  1. 使用 ida 分析
    將脫殼的unix可執行文件拖入 ida 中;(等ida分析完成之後會發現得到的函數名都是形如sub_xxxx,只表示了該函數的靜態地址偏移,並沒有帶來功能方面的任何信息因爲基於Unity的iOS二進制文件不同於基於Objc-C下的,其符號表是另外加載。擴展一點說就是Unity在生成iOS二進制的時候,將開發者編寫的C#代碼編譯成Cpp代碼,成爲IL2CPP。)
  2. 取得 IL2CPP 的符號表
    在解壓ipa得到的app包中可以得到IL2CPP的符號表,在xxx.app/Data/Managed/Metadata目錄下的global-metadata.dat文件。在這裏插入圖片描述
  3. 獲取 Unity 的語言的版本號
    先去Unity官網看一下有哪些版本,從2019.2開始往前推,最後猜到正確的版本號是2018.4在這裏插入圖片描述
  4. 使用Il2CppDumper提取符號表
    在 windows 中打開Il2CppDumper.exe 需要提供兩個文件,將脫殼的unix可執行文件,及其IL2CPP的符號表即global-metadata.dat文件,然後輸入Unity的版本2018.4。然後選擇使用的模式,官方推薦是3.Auto(Plus),最後得到了兩個輸出文件script.py和dump.cs。在這裏插入圖片描述
  5. 其中script.py可以用於ida,對IL2CPP表中的無名函數進行標記成形成類名$$函數名,逆向工程就有頭緒了。另一個文件dump.cs是提取的方便閱讀的符號表,可以使用任意文本編輯器打開,就像閱讀源碼的頭文件一樣。在這裏插入圖片描述
  6. 在IDA中選擇File - Script file…選擇剛纔獲取的script.py對函數進行命名,完成之後可以看到真的是耳目一新,瞬間清醒如上數學課被點名回答問題一樣。

動態調試

  1. 在 IDA中選擇 Remote iOS debugger
  2. 設置符號路徑
    將符號路徑複製到 IDA的符號路徑下 (Xcode將把符號存儲在:~/Library/Developer/Xcode/iOS DeviceSupport/11.4.1 (15G77)/Symbols 中, 在IDA中,將此路徑複製到Debugger>Debugger options>Set specific options中的“符號路徑”)
    在這裏插入圖片描述
  3. 獲取應用程序可執行文件的路徑
    爲了讓IDA調試這個應用程序,它必須知道應用程序可執行文件的路徑。 但是,iOS往往隱藏這些關於文件系統的細節,據我們所知,沒有辦法正式 請問Xcode究竟在哪裏安裝了你的設備上的應用程序。所以,我們使用以下解決方法:在AppDelegate.m,並在函didFinishLaunchingWithOptions中插入以下行NSLog ( @“app安裝路徑:%@” ,[[ NSBundle mainBundle ] executablePath ]);這將確保安裝路徑將在應用程序運行時在Xcode控制檯中打印。現在點擊Xcode窗口左上角的大播放按鈕。 這將構建,安裝和在目標設備上啓動應用程序。 一旦你看到該應用程序已經啓動和應用程序路徑已經打印到控制檯,請按左上方的“停止”按鈕。
  4. 啓動調試器
    現在是時候在IDA中打開我們的示例應用程序。 在Xcode窗口的左邊,在Project Navigator選項卡,點擊Products文件夾下的demo.app. 然後,在“實用程序”選項卡下的Xcode窗口的右側,可以找到新的路徑建立應用程序包。 使用此路徑在IDA中打開應用程序的可執行文件:
    在這裏插入圖片描述
    在這裏插入圖片描述
  5. 設置可執行文件的路徑
    Debugger> Process options …菜單,並在’Application’和’Input File’字段中使用應用程序可執行文件的路徑
    在這裏插入圖片描述
  6. 開始調試
    點擊 Start process
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章