# UnCrackable App for iOS Level 1 Analysis 這次將使用OWASP-MSTG 中 [UnCrackable App for iOS Level 1](https://github.com/OWASP/owasp-mstg/tree/master/Crackmes#ios) 範例。 範例目標: 找出正確的Hidden Label text! 輸入後驗證,會跳dialog確認是否成功。 ## 壹、將frida lib 修改進 binary 下載[UnCrackable App for iOS Level 1](https://github.com/OWASP/owasp-mstg/tree/master/Crackmes#ios) ipa後開始修改。 ### 一. 解壓縮ipa 把副檔名改成.zip 再解壓縮 ### 二. 建立 FridaGadget.dylib 在.app 檔中 解壓後會出現"Payload"資料夾,裡面有.app檔。 打開terminal 把路徑導到 .app 中 ``` cd 路徑/XXX.app ``` 建立一個 FridaGadget.dylib ``` curl -O https://build.frida.re/frida/ios/lib/FridaGadget.dylib ``` 對.app檔 右鍵 顯示套件內容,檢查是否有創建成功,且跟exec檔同位置。 ![](https://i.imgur.com/OB8p5Sm.png) ![](https://i.imgur.com/APDTFmZ.png) ### 三. 把FridaGadget.dylib 修改進 .exec中 這部分需要用到[insert_dylib](https://github.com/Tyilo/insert_dylib)這是一個command line tool。 :::success 介紹一下如何啟用: 1. 下載後,用xcode 開啟 insert_dylib.xcodeproj, 並把專案run起來 ![](https://i.imgur.com/QynvOUC.png) 2. 在"Prodcucts" 中 對 ==insert_dylib== 右鍵 show in Finder,就可以找到該執行檔位置 如果沒有“Prodcucts”,可參考[這篇藍色區域的補充](https://hackmd.io/ETvce8KPRFmC2L6Cr6bXUA?view#%E4%B8%89-%E4%BF%9D%E5%AD%98-profile-%E6%AA%94) ![](https://i.imgur.com/M4Ua7wO.png) 3. 運行起來就可以使用指令了~ 這邊補充2種運行方式: A. 在該執行檔的 上層 資料夾中,右鍵 -> 服務 -> 新增位於檔案夾位置的終端機視窗 ![](https://i.imgur.com/8USn3Jz.png) B. 設定環境變數 ::: 啟用工具後,在terminal 下指令 ``` ./insert_dylib dylib_path(FridaGadget.dylib路徑) binary_path(exec路徑) ``` enter 後,可以檢查是否多一個_patched 的exec檔。 ![](https://i.imgur.com/BYCwyyy.png) ### 四. 修改Bundle ID 在 Info.plist 修改Bundle ID ,改跟後續“重新簽名”流程中要替換的profile 中的Bundle ID 一樣即可。 ![](https://i.imgur.com/5RhVxeu.png) ### 五. 壓縮檔案 對"Payload"資料夾,右鍵 壓縮。 ![](https://i.imgur.com/QTZab30.png) 壓縮後,記得把 ==副檔名換成.ipa==,檔名也可以做調整。 ## 貳、重新簽名並裝進實機 這部分參考[ipa 重新簽名 流程](https://hackmd.io/@3W6NuLxKQyqIKmDCrDAhgA/S1xwumwW5)。 ## 參、連接設定 1. 準備工具 - 下載[Frida](https://frida.re/) - 下載 [frida-adget](https://github.com/frida/frida/releases),解壓後把.dylib檔重新命名並放到以下路徑(如果路徑沒東西就創一個) ``` ~/.cache/frida/gadget-ios.dylib ``` 2. 將手機以USB連接至mac 3. 手機開啟app,mac 打開termanal 鍵入 ``` frida-ps -Uia ``` 確認是否連接成功 ![](https://i.imgur.com/ozsXv6c.png) 4. termanal 鍵入,連接至APP,即成功連接 ``` frida -U UnCrackable1 ``` ![](https://i.imgur.com/ypnG8za.png) ## 肆、開始分析 ``` w = ObjC.classes.UIWindow.keyWindow() ``` ![](https://i.imgur.com/N9HlrNP.png) ``` desc = w.recursiveDescription().toString() ``` ![](https://i.imgur.com/PdbrP1e.png) 觀察下印出的 log ,即可發現有個隱藏的label,text = " i am groot! " 輸入此,驗證就會成功顯示! ![](https://i.imgur.com/vkwOjGM.png) ## 參考資料