ipapatch: 免越獄調試、修改第三方app
是以我又對這個方向做了進一步的嘗試,最後 ipapatch 誕生了~

我已經把模版工程放在了 github 上了,歡迎大家提 issue~
<a href="https://github.com/naituw/ipapatch" target="_blank">https://github.com/naituw/ipapatch</a>
另外還包含一個 demo
<a href="https://github.com/naituw/ipapatch/releases" target="_blank">https://github.com/naituw/ipapatch/releases</a>
和 "hackingfacebook" 類似,"ipapatch" 主要可以在第三方的 ipa 檔案上 "添加" 自己的代碼,但過程有很大不同:
過程簡單
提供 ipa 檔案和你的代碼,配置好簽名資訊,點選“運作”即可
整個過程在 xcode 中進行,就像在編寫自己的 app
ipa 檔案依然需要是解密過的
在 youtube 中彈出自定義視窗
支援調試
在 xcode 中可以直接斷點進行調試
可以用 lldb 指令(如 po),輸出運作時資訊
可以使用 xcode 的調試功能檢視 view hierarchy、memory graph 等資訊
使用 lldb 調試 youtube
支援連結第三方 framework
在內建一些第三方服務時很有用
例如之前發微網誌的 reveal 調試 youtube 就是這種方式
使用 reveal 調試 youtube
修改過的 app 可以與原始 app 共存,并自動修改名字以作區分
修改過的 youtube 和 facebook
主要的自動化過程在 patch.sh 這個腳本裡,xcode 會在把你的代碼編譯成 framework 後執行這個腳本:
解壓 ipa 檔案
用 ipa 檔案的内容,替換掉 xcode 生成的 .app 的内容
通過 optool,将你代碼生成的 framework 及其他外部 framework,注入到二進制檔案中
對這些檔案進行重新簽名
完成後,xcode 會自動将修改過的 .app 安裝到 iphone 上
之前發過一個 “ios 10.3 使用 reveal 調試 youtube” 的微網誌,我就用這個來舉例吧。
1. 首先我們需要準備一個解密過的 youtube ipa 檔案,這個檔案可以從越獄手機上導出,也可以直接去網站下載下傳,比如我自己常用的是 iphonecake.com
2. 将 ipa 檔案命名為 app.ipa,替換模版工程中的 assets/app.ipa 檔案
3. 打開 reveal,拿到需要內建的 framework 檔案
4. 将 revealserver.framework 放置在 assets/frameworks/revealserver.framework
5. 打開 ipapatch,在 ipapatch-dummyapp 這個 target 裡,配置好 bundleid 和代碼簽名。display name 會作為字首添加到原來的 app 上,如圖配置的話最後就是 "revealyoutube"
6. 點選 xcode 左上角的編譯運作按鈕,修改好的 youtube 就會安裝到手機上,reveal 中也能找到
我把這個 demo 打了一個包,傳到 github 的 release 中了,大家可以自行下載下傳嘗試~
其實做這個項目的起因,并不是想要對其他 app 進行修改,而是在競品分析時,想盡可能了解其他 app 是如何實作類似需求的。 然後發現其實我們還能做到比抓包更進一步,對我自己很有用,是以也分享給大家~
最後還是想說一句,該項目僅用于學習目的,請勿濫用~
本文來自合作夥伴“阿裡聚安全”,發表于2017年03月20日 13:36.