---
# System prepended metadata

title: UnCrackable App for iOS Level 1 Analysis

---

# 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)




## 參考資料

