初涉iOS逆向工程:免越獄修改微信(外觀篇)
美國學者埃德加·戴爾(Edgar Dale)1946年提出了“學習金字塔”(Cone of Learning)的理論。他提到:學習效果在50%以上的,都是主動學習包括討論、實踐和講授。我希望能通過做筆記的方式,鞏固自己學過的知識,以及分享這些知識給其他對此感興趣的人。
前言
微信成立七年多了,主界面也一直沒有變過,和剛推出一樣的簡潔,純粹。 但是看久了這個唯一的主題,總會有一些眼膩。偶然在網上看到了美化版的微信,而這些“分身版”、“美化版”的客戶端預留了大量高危接口,一不注意手機就會中招,于是生出了自己搗鼓的念頭。剛開始的時候什么都不懂,做了一大堆無用功,寫下來避免更多人重蹈覆轍。
iMazing導入(失敗)
- 之前在Mac上用iMazing改過幾個小游戲的數據,所以我先試著從iMazing導出,結果發現導出的.imazingapp文件只有幾份簡單的數據(猜測是沒受簽名保護的文件),根本沒有能修改的東西,心態崩了。
PP/愛思助手導入(失敗)
- 這是網上出現最多的方法,在PP助手上下載正版ipa,提取其中的文件,發現朋友圈的顏色在其根目錄下的color.css文件中。直接用記事本打開隨便修改幾個RGB顏色,保存。導入到手機時出現驗證失敗的提示,很明顯是簽名的問題。網上對這個問題的說法不一,個人覺得是版本的問題 。到這篇文章完成之前iOS 11.2 仍然不能越獄,第三方助手工具也沒有找到此版本對應的漏洞,所以不支持導入修改過的ipa,心態繼續崩。
IPAPatch導入(成功)
此方法涉及到了精彩的iOS逆向工程,感謝Naituw大神帶我打開了新世界的大門。
IPAPatch是什么?
GitHub用戶Naituw表示之前開源的關閉 Facebook for iOS 的 HTTPS 證書校驗的方法操作太過繁瑣,為了進一步簡化調試、驗證操作,研發了IPAPatch,它可以提供一個簡單的方法來修補iOS應用程序,且不需要越獄。
IPAPatch 可以做什么呢?
和 "HackingFacebook" 類似,"IPAPatch" 主要可以在第三方的 IPA 文件上 "添加" 自己的代碼,但過程有很大不同:
大神Github:https://github.com/Naituw/
開整
一 . 最終效果展示
二 . 需要準備的工具及設備
- 清醒的頭腦
- 開發者賬號(或證書)
- Macbook
- Xcode for mac
- Reveal for mac
- PlistEdit Pro for mac
三 . 具體實現步驟
1.下載開源項目IPAPatch,下載地址:百度網盤 密碼: wu1m;
2.打開Reveal,依次點擊菜單欄 Help → Show Reveal Library in Finder → iOS Library , 在iOS Library里拿到集成文件RevealServer.framework,并將此集成文件移動到IPAPatch/Assets/Frameworks文件夾里;
3.準備一個解密過的 微信.ipa 文件。可以自行砸殼,因為身邊沒有越獄的手機,所以我是在PP助手下載的越獄版。放上已破殼6.6.6版本:百度網盤https://pan.baidu.com/share/init?surl=zP4MlvUfLkVXwgFGqcRZtA 密碼: ipyj;
4.修改文件并保存;
5.將 微信.ipa 重命名為 app.ipa,替換文件夾IPAPatch/Assets里的模板文件app.ipa;
6.打開IPAPatch.xcodeproj文件,點擊左上角項目欄的三角形感嘆號移動界面至Show the Issue navigator,再點擊進入左側 IPAPatch-DummyApp 標簽,在右邊的詳細信息里配置Bundle Identifier和開發者證書。其中Display Name更改后會作為前綴添加到更改后的App上;
7.連接iPhone,趁電腦不注意,迅速點擊左上角的運行按鈕,稍等片刻,將自動將此App安裝到手機上;
- 上面的操作其實很簡單,關鍵性的編譯、執行以及注入步驟都已經由大神寫進了patch.sh的腳本里,編譯運行時,所有操作都是全自動完成的。
- Build Succeed后,激起了我修改更多數據的興趣,剛好又在網上找到了另一個大神制作的一大堆iOS主題包。
- 隨便下載一個主題替換包,能替換的東西基本上已經全部包含在里面了。解壓后將要替換的文件拖入之前的app.ipa里,等待文件替換完成。
再重復第七步即可。
簡單介紹一下部分替換文件,有待繼續挖掘
- app.ipa/AppIcon**x**@*x.png:微信圖標,目前更改后手機桌面仍然顯示原圖標,原因不詳
- app.ipa/Expression_**@2x.png :老掉牙的表情
- app.ipa/zh_CN.lproj/InfoPlist.strings :包含微信的名稱、以及發現頁的幾項文字(朋友圈、掃一掃)
- app.ipa/zh_CN.lproj/mm.strings:大部分文字選項都在這個文件里,都可以修改,隨便修改了兩項
- app.ipa/Assets.car:大多數圖標文件集成在這個文件里
- app.ipa/in.caf :消息鈴聲
四.遇到的幾項問題以及注意事項
- 個人描述證書只有七天的期限,七天后需要重新安裝。
- 用自己證書安裝的微信不支持Safiri瀏覽器上的網頁分享,應該是未上架App store客戶端的通病。
- 有時候不推送通知,或只通知一次,原因不詳。
- 解壓后的IPAPatch文件只能用Xcode運行一次,第二次運行會出現“apple match-o linker error”,此問題還沒有找到解決辦法,望各路大神指點一二。
- 第一次進入微信或者結束進程后再打開微信會有hock成功的提示。此提示可以在IPAPatchEntry.mm文件里更改(alertControllerWithTitle;message;alertControlleraddAction;)。
總結
這篇文章只記錄了如何修改App的外觀,其他的例如防撤回、自動搶紅包以及隱藏小紅點等功能性模塊涉及到了更多Objective-C方面的知識,本人剛接觸OC,尚未弄懂其深邃的語法,在接下來的日子里我會繼續向深層次探索。