iOS逆向----手動重簽名(重簽名工具的原理)
阿新 • • 發佈:2018-12-20
-
首先搞一個脫殼的IPA包,可以從PP助手等應用中下載現成的,也可以自己砸一個。。關於砸殼可以看這篇文章,我們把這個IPA命名為test.ipa,把APP命名為test.app(命名只是為了以下方便閱讀)
-
通過otool命令確認是否是脫殼的APP,然後將test.app包中的外掛,也就是把Plugins和Watch資料夾刪除。
-
檢視本地證書列表,複製所需證書的名稱, 備用,這裡建議用個人賬號。
➜ Payload 2 security find-identity -v -p codesigning
1) 78DFD55F435671AE65961656FFDD6BAF07CBF549 "iPhone Distribution:xxx., LTD."
2) 66FF144D0622E869B8927496732BD3B78201DCAA "iPhone Developer:XX (3889XXXXXX)"
3) 4FB5D3AE5F99AC07E939DC1897019E8CDDC50637 "iPhone Distribution:XX (QTZEXXXXXXX)" (CSSMERR_TP_CERT_REVOKED)
4) 1CE74A8CA1A5EE850DC0734293CFEE27E5BE85FF "iPhone Developer: [email protected] (NZFF8BXXXX)" (CSSMERR_TP_CERT_REVOKED)
......
- 新建一個xcode工程,選擇第三步複製的證書,然後真機執行一下,生成描述檔案,然後找到APP包,右鍵顯示包內容,拷貝出其中的描述檔案,放到跟test.ipa同一級目錄下。然後新建一個entitlements.plist檔案(Property List),留著備用。
- 進入test.app包內,對Framework資料夾下的所有framework進行重簽名。每一個framework都要重簽名,也就是說有幾個framework就執行幾次下面的語句,記得換framework的名字。。這裡的證書也是上面拷貝和xcode選擇的證書。
codesign -fs "iPhone Developer: xxx (J5HYSJXXXX)" xxx.framework
- 使用chmod命令修改test.app的可執行檔案為可執行
chmod 777 app的二進位制檔案
或者
chmod +x app的二進位制檔案
- 檢視剛才拷貝的描述檔案資訊
security cms -D -i embedded.mobileprovision
然後複製其中這麼一段:
<key>keychain-access-groups</key> <array> <string>CZ6TZMXXXX.*</string> </array> <key>get-task-allow</key> <true/> <key>application-identifier</key> <string>CZ6TZMXXXX.org.reactjs.native.example.RNDemo-</string> <key>com.apple.developer.team-identifier</key> <string>CZ6TZMXXXX</string>
-
以source code的方式開啟剛才新建的entitlements.plist檔案,並把上面那一段複製進去。然後儲存該檔案,將該檔案複製到test.app的同級目錄下
-
修改 bundleID,將 test.app 中Info.plist檔案中的 bundleID 與新建的 xcode 專案Info.plist檔案中對應的bundleID設定成相同值。
-
然後利用以下命令進行簽名:
codesign -fs "iPhone Developer: xxx (J5HYSJXXXX)" --no-strict --entitlements=entitlements.plist test.app
- 生成新的.ipa 包, 安裝測試。