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