天天看點

IPAPatch: 免越獄調試、修改第三方App

是以我又對這個方向做了進一步的嘗試,最後 ipapatch 誕生了~

IPAPatch: 免越獄調試、修改第三方App

我已經把模版工程放在了 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 檔案依然需要是解密過的

IPAPatch: 免越獄調試、修改第三方App

在 youtube 中彈出自定義視窗

支援調試

在 xcode 中可以直接斷點進行調試

可以用 lldb 指令(如 po),輸出運作時資訊

可以使用 xcode 的調試功能檢視 view hierarchy、memory graph 等資訊

IPAPatch: 免越獄調試、修改第三方App

使用 lldb 調試 youtube

支援連結第三方 framework

在內建一些第三方服務時很有用

例如之前發微網誌的 reveal 調試 youtube 就是這種方式

IPAPatch: 免越獄調試、修改第三方App

使用 reveal 調試 youtube

修改過的 app 可以與原始 app 共存,并自動修改名字以作區分

IPAPatch: 免越獄調試、修改第三方App

修改過的 youtube 和 facebook

主要的自動化過程在 patch.sh 這個腳本裡,xcode 會在把你的代碼編譯成 framework 後執行這個腳本:

解壓 ipa 檔案

用 ipa 檔案的内容,替換掉 xcode 生成的 .app 的内容

通過 optool,将你代碼生成的 framework 及其他外部 framework,注入到二進制檔案中

對這些檔案進行重新簽名 

完成後,xcode 會自動将修改過的 .app 安裝到 iphone 上

之前發過一個 “ios 10.3 使用 reveal 調試 youtube” 的微網誌,我就用這個來舉例吧。

IPAPatch: 免越獄調試、修改第三方App

1. 首先我們需要準備一個解密過的 youtube ipa 檔案,這個檔案可以從越獄手機上導出,也可以直接去網站下載下傳,比如我自己常用的是 iphonecake.com

2. 将 ipa 檔案命名為 app.ipa,替換模版工程中的 assets/app.ipa 檔案

3. 打開 reveal,拿到需要內建的 framework 檔案 

IPAPatch: 免越獄調試、修改第三方App
IPAPatch: 免越獄調試、修改第三方App

4. 将 revealserver.framework 放置在 assets/frameworks/revealserver.framework

5. 打開 ipapatch,在 ipapatch-dummyapp 這個 target 裡,配置好 bundleid 和代碼簽名。display name 會作為字首添加到原來的 app 上,如圖配置的話最後就是 "revealyoutube" 

IPAPatch: 免越獄調試、修改第三方App

6. 點選 xcode 左上角的編譯運作按鈕,修改好的 youtube 就會安裝到手機上,reveal 中也能找到 

IPAPatch: 免越獄調試、修改第三方App

我把這個 demo 打了一個包,傳到 github 的 release 中了,大家可以自行下載下傳嘗試~

其實做這個項目的起因,并不是想要對其他 app 進行修改,而是在競品分析時,想盡可能了解其他 app 是如何實作類似需求的。 然後發現其實我們還能做到比抓包更進一步,對我自己很有用,是以也分享給大家~

最後還是想說一句,該項目僅用于學習目的,請勿濫用~

繼續閱讀