iOS逆向必備絕技之ipa重簽名

1、重簽名準備工做:

  • 找到開發者證書和配置文件:

列出全部開發者證書文件:html

security find-identity -p codesigning -vios

  • 找一個開發環境配置文件生成entitlements.plist文件,後面簽名要用到:
 
security cms -D -i XX.mobileprovision > profile.plist
 
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' profile.plist > entitlements.plist
 
cat entitlements.plist
  • 把準備好的開發環境配置文件複製到XX.app文件夾下:

cp XX.mobileprovision Payload/XX.app/embedded.mobileprovisiongit

  • 修改包Info.plist中的Bundle Identifier與配置文件中的Bundle Identifier保持一致:

/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.XX.XX" Payload/XX.app/Info.plistgithub

  • 移除以前的簽名文件夾:

rm -rf Payload/XX.app/_CodeSignatureapp

2、iOS重簽名:

  • 重簽名framework:

/usr/bin/codesign --force --sign 84A4B9F1F902462CC33D01E9FF72C1BA04A97653 --entitlements entitlements.plist /Payload/XX.app/Frameworks/JSONModel.frameworkide

  • 重簽名app執行文件:

/usr/bin/codesign --force --sign 84A4B9F1F902462CC33D01E9FF72C1BA04A97653 --entitlements entitlements.plist Payload/XX.app/XX工具

  • 查看app簽名信息:

codesign -vv -d Payload/XX.appurl

注意:重簽名有順序,先把framework和dylib簽名,最後再簽名:XX.app/XX,順序弄錯了,就算簽名成功也可能會安裝失敗!調試

3、調試和打包:

ios-deploy -d -b Payload/XX.appcode

出現以下success字樣,就證實成功了!

過程當中若是遇到錯誤提示:「Error 0xe8000067: There was an internal API error. AMDeviceSecureInstallApplication(0, device, url, options, install_callback, 0)」

錯誤緣由:可能存在有framework或者dylib未簽名的狀況。

解決方案:把app文件夾下面的framework所有簽名。

  • 打包(package):
 
zip -qry ppdest.ipa Payload
 
rm -rf Payload/

4、iOS重簽名工具介紹:

5、參考資料地址:

相關文章
相關標籤/搜索