2.通过上述两个id 分迹轿别创建对应的描述文件。
3.通过证书和两个描述文件对无签名的ipa进行替换签名
原理:通过砸包对配森插件和主app进行姿卖肆重签名
准备
在重签名之前要做一些准备工作。
1.首先要下载并安装Xcode,里面有个codesign_allocate程序,在安装时/usr/bin中会多一个codesign的程序,该程序用于ipa包的签名。
2.企业证书的Certificate文件,私钥文件,Provisioning Profile文件等。注意企业证书一定要是iOS Distribution的类型,不能是iOS Development。
重签名步骤
1.解压ipa
解压ipa得到Payload/[App name].bundle,打开bundle。
2.删除旧的ipa签名信息
删除bundle中的_CodeSignature文件夹,也就是删除之前ipa的签名信息。
3.更换证书
将bundle中旧的Provisioning Profile删除,用我们自己的企业证书的Provisioning Profile替代。
注意,要将ipa包中我们的企业证书改名为embedded.mobileprovision。
4.修改bundle内容
此时我们可以尽情地修改bundle中的内容,例如添加一个动态库,删除一张图片等。
注意:如果要往bundle中添加动态库,必须要先将其压缩成zip文件,在程序启动时将其解压到Documents目录下再dlopen,否则程序在启动时加载动态库文件会卡死在那里。
5.重新签名
在完成bundle内容的修改后,需要通过/usr/bin/codesign程凳蚂拦序重新签名,命令如下:
/usr/bin/codesign -f -s "iPhone Distribution: YourCompanyName" --resource-rules Payload/ MYAPP.app/ResourceRules.plist Payload/ MYAPP.app
其中iPhone Distribution可以从钥匙串访问中获取,就是企业证书的名字,例如下面的"iPhone Distribution:XXXXXXXXXX":
具体的命令示例:
codesign -f -s "iPhone Developer: XXXXXXXXXX" --resource-rules Payload/NdCP_Game_Demo.app/ResourceRules.plist Payload/NdCP_Game_Demo.app
这条命令的意思是:使用keychain中"iPhone Developer: XXXXXXXXXX"标识的证书,根据Payload/NdCP_Game_Demo.app/ResourceRules.plist文件中的规则进行签名,如果ipa包中已经存在签名,那么将被替换,该过程生成的_CodeSignature目录将存放在Payload/NdCP_Game_Demo.app目录下。
在命令执行后,在bundle中会生成一个新的_CodeSignature目录,里面包含了新的签名信息。
6.重新打包成ipa
在完成上述工作后,可以生成新物配的ipa进行发布。示例命令如下:
zip -r ResignTest.ipa Payload
# 注枣胡意Payload后面不能有“/”
7.发布
经过打包发布测试,得出结论:对修改了ipa包内容和其中的签名后,重签名的ipa文件可以在非越狱设备和越狱设备上成功安装。注意,是通过带有SSL证书的网站和Apple系统安装的(企业内部分发程序),不是通过PP助手那样的第三方工具安装的。
一、解压ipa包
1、unzip -q /Users/xiaoconglin/Desktop/packbck/RHDemo_H5.ipa -d /Users/xiaoconglin/Desktop/packbck/resign
二、列出所有开发者证书文件
1、security find-identity -v -p codesigning
三、生成entitlements.plist文件
1、security cms -D -i /Users/xiaoconglin/Desktop/packbck/wcyxadhoc.mobileprovision >/Users/xiaoconglin/Desktop/packbck/resign/profile.plist
2、/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' /Users/xiaoconglin/Desktop/packbck/resign/profile.plist >/Users/xiaoconglin/Desktop/packbck/resign/entitlements.plist
四、把准备好的开发者证书描述文件复制到XX.app文件夹下
1、cp /Users/xiaoconglin/Desktop/packbck/wcyxadhoc.mobileprovision /Users/xiaoconglin/Desktop/packbck/resign/Payload/大天使之剑.app/embedded.mobileprovision
五、修改包Info.plist中的Bundle Identifier与配置文件中的Bundle Identifier保持一致
1、查看entitlements.plist,获取application-identifier 的值作为app的新bundleidentify
cat /Users/xiaoconglin/Downloads/重签名包/packResign/app-plist/entitlements.plist
2、/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.xy.xxxx" /Users/xiaoconglin/Desktop/packbck/resign/Payload/大天使之剑.app/Info.plist
六、移除已经签名的_CodeSignature 包括framework里面的
1、rm -rf Payload/XX.app/_CodeSignature
2、rm -rf Payload/XX.app/framework/_CodeSignature
七、重签名framework,有多少个framewrok 就重签多少
1、/usr/卖陆物bin/codesign --force --sign 6D9B32BC1A4F36D6E8BD63C05B4B6116775A0D2A --entitlements /Users/xiaoconglin/Desktop/packbck/resign/entitlements.plist /Users/xiaoconglin/Desktop/packbck/resign/Payload/大天使之剑.app/Frameworks/Translate.framework
八、重签名app
1、/usr/bin/codesign --force --sign 6D9B32BC1A4F36D6E8BD63C05B4B6116775A0D2A --entitlements /Users/xiaoconglin/Desktop/packbck/resign/entitlements.plist /Users/xiaoconglin/Desktop/packbck/resign/Payload/大天使中液之剑.app/大天使之剑
九、压缩悉雹
1、cd /Users/xiaoconglin/Desktop/packbck/resign
2、zip -qr seg.ipa Payload/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)