iOS逆向之旅(进阶篇) — 重签名APP(一)
生活随笔
收集整理的這篇文章主要介紹了
iOS逆向之旅(进阶篇) — 重签名APP(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
重簽名的四種方式
- 手動重簽名【這種方法很復雜,容易出錯,不過更接近原理】
- 使用Xcode進行重簽名【在手動重簽的基礎上,利用XCode的功能執行部分操作,這種方法比較簡單】
- 使用XCode腳本自動簽名【首選的方法】
- 使用Monkey自動簽名【Monkey的原理其實就是第三種方法】
手動重簽名APP【這里以WeChat為例】
準備工作
微信脫殼后的IPA包【砸殼有兩種方式(Clutch、dumpdecrypted),有興趣的可以先去了解一下,我也會在后續的文章中分享這兩種工具的使用,我們現在暫時從PP助手上面下載IPA包】 #####操作流程 1.解壓wechat.ipa【ipa文件本質就是個zip包】
2.找到Payload文件夾下的Wechat.app 3.如何判斷一個APP是否被砸過殼砸過殼的App會有兩個特點:沒有簽名信息和已經解過密了
- 查看.app文件的簽名信息 $codesign -vv -d WeChat.app
- 查看.app文件里面可執行文件的加密信息 獲取給可執行文件的加密信息 $otool -l WeChat | grep crypt 因為cryptid的值為0,代表已經被解密了【砸殼是PP助手幫我們做的,后面我會在越獄篇介紹如何自己動手】
4.開始手動去重簽名
- 由于 Plugins/Wacth 里面是一些拓展插件和WatchApp,個人的證書沒辦法簽extension,簽名后無法正常安裝到手機上,需要刪掉
一開始我強行簽名這些插件,安裝到手機上時會出現如下報錯
后來我在Monkey的簽名腳本中,發現他們是直接把這兩個文件夾直接刪掉- 需要對APP用到的每一個動態庫【framework/dylib】進行簽名
- 首先簽名需要你有蘋果開發者賬號的開發證書
- 查看我們可以用來簽名的證書信息 $security find-identity -v -p codesigning
- 簽名動態庫【這里需要把.app/Frameworks目錄下的所有動態庫進行簽名】 codesign -fs "iPhone Developer: XXX (XXXXXXXX)" mars.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MMCommon.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MultiMedia.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" WCDB.framework ""里面是我們自己的證書,這里我就隱藏了用XXX替代
- 給WeChat.app下的可執行文件執行權限
$chmod +x WeChat
- 添加描述文件
新建一個工程,使用真機編譯,從生成的APP包中獲取描述文件
- 修改info.plist里面的Bundle ID 【這個Bundle ID 必須跟我們剛新建的工廠的Bundle ID一致】
- 生成權限文件
通過我們剛才生成描述文件中,查詢出權限信息 $security cms -D -i embedded.mobileprovision
然后使用XCode新建一個Entitlements.plist文件把權限信息拷貝進來,這樣就得到我們自己的權限文件了- 把新的權限文件放到.app文件的同級目錄下,使用權限文件,簽名整個APP
- 使用 Devices and Simulators 成功安裝到手機上
總結
以上是生活随笔為你收集整理的iOS逆向之旅(进阶篇) — 重签名APP(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql视图使用方法
- 下一篇: 【leetcode】423. Recon