iOS签名原理

如上图,iOS的app编译完后会有几次签名处理。具体原理自己去百度,这里不细说。因为Apple私钥只有苹果才有,所以mobileprovision文件我们是不可能修改的了,唯一能操作的就只有上图第一步了,可以修改App内容,然后用我们mac的私钥进行签名。然后替换对应的mobileprovision文件。
目标
修改ipa安装包内容或者一些配置,然后重签名,让它可以正常运行在非越狱的手机。
1、要重签名,可以拿原app的证书,p12私钥,这不可能拿到。所以这里可以用我们自己的证书,mobileprovision文件,我们mac有证书对应的p12私钥。
2、还有个问题,我们的mobileprovision的appid与app的不匹配。没关系,可以进到ipa包修改Info.plist的Bundle identifier,使之与我的mobileprovision的Bundle identifier匹配。
3、去哪里拿我的mobileprovision文件呢。可以随便编译一个项目,查看生成的app的包内容,里面有对应的mobileprovision文件。如下:
这里注意下,对于要重签名的ipa,也是进入到ipa的包内容,如上。用你的mobileprovision替换掉包里面的mobileprovision,然后修改那个Info.plist里面的bundle ID为你mobileprovision的bundle ID。
4、所有资料都准备了,如何重编译呢?
4.1、可以通过命令行(比较麻烦):

1、security cms -D -i embedded.mobileprovision > temp.plist
2、/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' temp.plist > entitlements.plist
4.2、可以使用工具(推荐使用):

推荐使用第一款,打开后界面如下:

使用很简单,选中修改过的ipa,然后选择对应的证书就可以。Provisioning Profile选项可以默认,因为我们已经手动替换mobileprovision文件了。其他可以不写,直接start,就ok了。
网友评论