iOS逆向之旅(進階篇) — 重簽名APP(一)

重簽名的四種方式

  • 手動重簽名【這種方法很複雜,容易出錯,不過更接近原理】
  • 使用Xcode進行重簽名【在手動重籤的基礎上,利用XCode的功能執行部分操做,這種方法比較簡單】
  • 使用XCode腳本自動簽名【首選的方法】
  • 使用Monkey自動簽名【Monkey的原理其實就是第三種方法】

手動重簽名APP【這裏以WeChat爲例】

準備工做

微信脫殼後的IPA包【砸殼有兩種方式(Clutch、dumpdecrypted),有興趣的能夠先去了解一下,我也會在後續的文章中分享這兩種工具的使用,咱們如今暫時從PP助手上面下載IPA包】 #####操做流程 1.解壓wechat.ipa【ipa文件本質就是個zip包】 微信

14.png
2.找到Payload文件夾下的Wechat.app
image.png
3.如何判斷一個APP是否被砸過殼

砸過殼的App會有兩個特色:沒有簽名信息和已經解過密了app

  • 查看.app文件的簽名信息 $codesign -vv -d WeChat.app
    image.png
  • 查看.app文件裏面可執行文件的加密信息
    image.png
    image.png
    獲取給可執行文件的加密信息 $otool -l WeChat | grep crypt
    image.png
    由於cryptid的值爲0,表明已經被解密了【砸殼是PP助手幫咱們作的,後面我會在越獄篇介紹如何本身動手】

4.開始手動去重簽名ide

  • 因爲 Plugins/Wacth 裏面是一些拓展插件和WatchApp,我的的證書沒辦法籤extension,簽名後沒法正常安裝到手機上,須要刪掉

一開始我強行簽名這些插件,安裝到手機上時會出現以下報錯 工具

1231539672380_.pic.jpg
後來我在Monkey的簽名腳本中,發現他們是直接把這兩個文件夾直接刪掉
image.png

  • 須要對APP用到的每個動態庫【framework/dylib】進行簽名
  • 首先簽名須要你有蘋果開發者帳號的開發證書
  • 查看咱們能夠用來簽名的證書信息 $security find-identity -v -p codesigning
    image.png
  • 簽名動態庫【這裏須要把.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 加密

image.png

  • 添加描述文件

新建一個工程,使用真機編譯,從生成的APP包中獲取描述文件 插件

image.png

  • 修改info.plist裏面的Bundle ID 【這個Bundle ID 必須跟咱們剛新建的工廠的Bundle ID一致】
    image.png
  • 生成權限文件

經過咱們剛纔生成描述文件中,查詢出權限信息 $security cms -D -i embedded.mobileprovision 3d

image.png
而後使用XCode新建一個Entitlements.plist文件把權限信息拷貝進來,這樣就獲得咱們本身的權限文件了
image.png

  • 把新的權限文件放到.app文件的同級目錄下,使用權限文件,簽名整個APP

image.png
codesign -fs "iPhone Developer: XXX (XXXXXX)" --no-strict --entitlements=Entitlements.plist WeChat.app
image.png

  • 使用 Devices and Simulators 成功安裝到手機上
    image.png
    1221539672008_.pic.jpg
相關文章
相關標籤/搜索