??IPAPatch: 免越獄調(diào)試、修改第三方App

原文地址:??http://weibo.com/ttarticle/p/show?id=2309404086977153611942

之前在 GitHub 上開(kāi)源了關(guān)閉 Facebook for iOS 的 HTTPS 證書(shū)校驗(yàn)的方法 (Naituw/HackingFacebook)隆豹,收到了很多反饋,大部分都集中在操作的過(guò)程太復(fù)雜的問(wèn)題上助泽。其實(shí)我自己在后來(lái)修改其他 App 的過(guò)程中也察覺(jué)富玷,調(diào)試、驗(yàn)證問(wèn)題的過(guò)程中诚隙,操作太過(guò)繁瑣讶隐。

因此我又對(duì)這個(gè)方向做了進(jìn)一步的嘗試,最后 IPAPatch 誕生了~

源代碼

我已經(jīng)把模版工程放在了 GitHub 上了久又,歡迎大家提 Issue~

https://github.com/Naituw/IPAPatch

另外還包含一個(gè) Demo

https://github.com/Naituw/IPAPatch/releases


?IPAPatch 可以做什么呢巫延?

和 "HackingFacebook" 類似,"IPAPatch" 主要可以在第三方的 IPA 文件上 "添加" 自己的代碼地消,但過(guò)程有很大不同:

  • 過(guò)程簡(jiǎn)單
    • 提供 IPA 文件和你的代碼炉峰,配置好簽名信息,點(diǎn)擊“運(yùn)行”即可
    • 整個(gè)過(guò)程在 Xcode 中進(jìn)行脉执,就像在編寫(xiě)自己的 App
    • IPA 文件依然需要是解密過(guò)的
在 Youtube 中彈出自定義窗口

在 Youtube 中彈出自定義窗口

?

  • 支持調(diào)試
    • 在 Xcode 中可以直接斷點(diǎn)進(jìn)行調(diào)試
    • 可以用 lldb 命令(如 po)疼阔,輸出運(yùn)行時(shí)信息
    • 可以使用 Xcode 的調(diào)試功能查看 View Hierarchy、Memory Graph 等信息
使用 lldb 調(diào)試 Youtube

使用 lldb 調(diào)試 Youtube

?

  • 支持鏈接第三方 Framework
    • 在集成一些第三方服務(wù)時(shí)很有用
    • 例如之前發(fā)微博的 Reveal 調(diào)試 Youtube 就是這種方式
使用 Reveal 調(diào)試 Youtube

使用 Reveal 調(diào)試 Youtube

?

?

  • 修改過(guò)的 App 可以與原始 App 共存半夷,并自動(dòng)修改名字以作區(qū)分
修改過(guò)的 Youtube 和 Facebook

修改過(guò)的 Youtube 和 Facebook

?


怎么實(shí)現(xiàn)的婆廊?

主要的自動(dòng)化過(guò)程在 patch.sh 這個(gè)腳本里,Xcode 會(huì)在把你的代碼編譯成 Framework 后執(zhí)行這個(gè)腳本:

  1. 解壓 IPA 文件
  2. 用 IPA 文件的內(nèi)容巫橄,替換掉 Xcode 生成的 .app 的內(nèi)容
  3. 通過(guò) OPTOOL淘邻,將你代碼生成的 Framework 及其他外部 Framework,注入到二進(jìn)制文件中
  4. 對(duì)這些文件進(jìn)行重新簽名

完成后湘换,Xcode 會(huì)自動(dòng)將修改過(guò)的 .app 安裝到 iPhone 上


?具體的例子宾舅?

之前發(fā)過(guò)一個(gè) “iOS 10.3 使用 Reveal 調(diào)試 Youtube” 的微博,我就用這個(gè)來(lái)舉例吧彩倚。

使用 Reveal 調(diào)試 Youtube

使用 Reveal 調(diào)試 Youtube

?1. 首先我們需要準(zhǔn)備一個(gè)解密過(guò)的 Youtube IPA 文件贴浙,這個(gè)文件可以從越獄手機(jī)上導(dǎo)出,也可以直接去網(wǎng)站下載署恍,比如我自己常用的是 iphonecake.com

2. 將 IPA 文件命名為 app.ipa,替換模版工程中的 Assets/app.ipa 文件

3. 打開(kāi) Reveal蜻直,拿到需要集成的 Framework 文件

?

?4. 將 RevealServer.framework 放置在 Assets/Frameworks/RevealServer.framework

?

5. 打開(kāi) IPAPatch盯质,在 IPAPatch-DummyApp 這個(gè) Target 里,配置好 BundleID 和代碼簽名概而。Display Name 會(huì)作為前綴添加到原來(lái)的 App 上呼巷,如圖配置的話最后就是 "RevealYoutube"

?

6. 點(diǎn)擊 Xcode 左上角的編譯運(yùn)行按鈕,修改好的 Youtube 就會(huì)安裝到手機(jī)上赎瑰,Reveal 中也能找到

?

我把這個(gè) Demo 打了一個(gè)包王悍,傳到 GitHub 的 Release 中了,大家可以自行下載嘗試~

https://github.com/Naituw/IPAPatch/releases


后記

其實(shí)做這個(gè)項(xiàng)目的起因餐曼,并不是想要對(duì)其他 App 進(jìn)行修改压储,而是在競(jìng)品分析時(shí)鲜漩,想盡可能了解其他 App 是如何實(shí)現(xiàn)類似需求的。
然后發(fā)現(xiàn)其實(shí)我們還能做到比抓包更進(jìn)一步集惋,對(duì)我自己很有用孕似,所以也分享給大家~

最后還是想說(shuō)一句,該項(xiàng)目?jī)H用于學(xué)習(xí)目的刮刑,請(qǐng)勿濫用~

?

????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喉祭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雷绢,更是在濱河造成了極大的恐慌泛烙,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘紊,死亡現(xiàn)場(chǎng)離奇詭異蔽氨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)霞溪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)孵滞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鸯匹,你說(shuō)我怎么就攤上這事坊饶。” “怎么了殴蓬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵匿级,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我染厅,道長(zhǎng)痘绎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任肖粮,我火速辦了婚禮孤页,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涩馆。我一直安慰自己行施,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布魂那。 她就那樣靜靜地躺著蛾号,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涯雅。 梳的紋絲不亂的頭發(fā)上鲜结,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼精刷。 笑死拗胜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贬养。 我是一名探鬼主播挤土,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼误算!你這毒婦竟也來(lái)了仰美?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤儿礼,失蹤者是張志新(化名)和其女友劉穎咖杂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蚊夫,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诉字,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了知纷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤圃。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琅轧,靈堂內(nèi)的尸體忽然破棺而出伍绳,到底是詐尸還是另有隱情,我是刑警寧澤乍桂,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布冲杀,位于F島的核電站,受9級(jí)特大地震影響睹酌,放射性物質(zhì)發(fā)生泄漏权谁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一憋沿、第九天 我趴在偏房一處隱蔽的房頂上張望旺芽。 院中可真熱鬧,春花似錦辐啄、人聲如沸甥绿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至洗出,卻和暖如春士复,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工阱洪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留便贵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓冗荸,卻偏偏與公主長(zhǎng)得像承璃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚌本,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容