1. 程式人生 > >iOS逆向----手動重簽名(重簽名工具的原理)

iOS逆向----手動重簽名(重簽名工具的原理)

  1. 首先搞一個脫殼的IPA包,可以從PP助手等應用中下載現成的,也可以自己砸一個。。關於砸殼可以看這篇文章,我們把這個IPA命名為test.ipa,把APP命名為test.app(命名只是為了以下方便閱讀)

  2. 通過otool命令確認是否是脫殼的APP,然後將test.app包中的外掛,也就是把Plugins和Watch資料夾刪除。

  3. 檢視本地證書列表,複製所需證書的名稱, 備用,這裡建議用個人賬號。

➜  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) ......
  1. 新建一個xcode工程,選擇第三步複製的證書,然後真機執行一下,生成描述檔案,然後找到APP包,右鍵顯示包內容,拷貝出其中的描述檔案,放到跟test.ipa同一級目錄下。然後新建一個entitlements.plist檔案(Property List),留著備用。
    Show in finder

描述檔案

  1. 進入test.app包內,對Framework資料夾下的所有framework進行重簽名。每一個framework都要重簽名,也就是說有幾個framework就執行幾次下面的語句,記得換framework的名字。。這裡的證書也是上面拷貝和xcode選擇的證書。
codesign -fs "iPhone Developer: xxx (J5HYSJXXXX)"  xxx.framework
  1. 使用chmod命令修改test.app的可執行檔案為可執行
chmod 777 app的二進位制檔案
或者
chmod +x app的二進位制檔案
  1. 檢視剛才拷貝的描述檔案資訊
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>

  1. 以source code的方式開啟剛才新建的entitlements.plist檔案,並把上面那一段複製進去。然後儲存該檔案,將該檔案複製到test.app的同級目錄下
    entitlements.plist

  2. 修改 bundleID,將 test.app 中Info.plist檔案中的 bundleID 與新建的 xcode 專案Info.plist檔案中對應的bundleID設定成相同值。

  3. 然後利用以下命令進行簽名:

codesign -fs "iPhone Developer: xxx (J5HYSJXXXX)" --no-strict --entitlements=entitlements.plist test.app
  1. 生成新的.ipa 包, 安裝測試。