iOS逆向----手动重签名(重签名工具的原理)

版权声明:本文为博主原创文章,未经博主允许可以转载,但转载时请附上原文地址: https://blog.csdn.net/youshaoduo/article/details/83989945
  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 包, 安装测试。

猜你喜欢

转载自blog.csdn.net/youshaoduo/article/details/83989945