企业重签名步骤(不改包名) 及苹果验证猜想!

一直以来,在网上搜索重签名工具,搜索到的工具比如(wps重签名助手)等,基本上都需要重置info.plist里面的包名,否则经常失败,但是却看到某些提供企业签名服务的服务商却可以不修改包名实现重签app,通过整理重签名步骤,大概猜想一下验证思路,整理本文章.
分为2个模块,分别是:

  • 重签名app步骤(你不需要改包名)
  • 个人猜想不改包名可以成功原因

重签名步骤

1 . 修改ipa文件为zip格式,并且解压,解压完为Payload文件夹

 

企业重签名步骤(不改包名) 及苹果验证猜想!_第1张图片


2 . 进入Payload文件夹下 某某.app 文件夹,显示包内容

企业重签名步骤(不改包名) 及苹果验证猜想!_第2张图片

 

3 . 移除当前目录下的_CodeSignature文件夹

企业重签名步骤(不改包名) 及苹果验证猜想!_第3张图片

 

  1. 将我们用来重签名的embedded.mobileprovision文件(来源是开发者中心账号创建的并且下载的,不多讲)移动替换到目录下

    企业重签名步骤(不改包名) 及苹果验证猜想!_第4张图片

     

  2. 查看目录下是否存在子工程,比如说 wedget子工程,如果存在,请移除(我暂时不会也没尝试是否带着子工程可以签名成功,理论上应该可以成功,但是需要充分签名所有的二进制文件)

  3. 首先查看FrameWorks文件夹 找到frameWorks文件夹,查看是否存在frameWork文件,如果存在子的frameWork,那么需要对每一个都签,挨个对frameWork执行签名操作
    此处签名的命令为:

 

codesign -fs "iPhone Distribution: 你的发布证书团队名称 自己在钥匙串查看"   ***.framework(frameWork路径)
//如果替换签名成功,会显示 ***.framework : relpacing existing signature
  1. frameWork文件夹内的frameWork签名之后,那么我们下一步需要获取我们用来签名的embedded.mobileprovision文件中包含的权限信息对我们的Payload文件夹签名
    获取embedded.mobileprovision的信息的命令为:

 

通过下属命令获取里面的文件信息
security cms -D -i embedded.mobileprovision 
/*
终端会打印出来所有信息,我们需要选择Entitlements为key的字典,将其copy出来,
*/

copy的模块内容如下:

 

企业重签名步骤(不改包名) 及苹果验证猜想!_第5张图片


可以在xcode中,选中plist文件,右键,openAs--SourceCode,将内容copy进去保存即可

企业重签名步骤(不改包名) 及苹果验证猜想!_第6张图片

 

将上面的文件命名为elements.plist(任意名字都可以,为了方便理解)文件放到Payload同级目录下(其实放哪都行,只是为了操作方便)

企业重签名步骤(不改包名) 及苹果验证猜想!_第7张图片

 

 

然后使用我们后续的命令,对文件夹进行签名

 

//--no-strict -- 关键字是不严格的签名 然后配置我们创建的plist 然后进行签名,签名成功也会显示类似frameWork的签名替换
codesign -fs "iPhone Distribution: 你的发布证书团队名称 自己在钥匙串查看" --no-strict --entitlements=/Entitlements.plist  /Payload/XDl.app

ps: 可以使用命令查看app签名信息:

 

//查看app签名信息
codesign -vv -d Example.app

得到信息如图:

 

企业重签名步骤(不改包名) 及苹果验证猜想!_第8张图片

 

  1. 最好一部便是递归压缩文件,将文件压成ipa
    命令如下:

 

//  zip -r  保留的ipa名字.ipa  Payload/  
zip -r resign.ipa Payload/
  1. 然后就可以安装到合适的设备上了 中间步骤不需要改包名

个人猜想为什么不修改包名仍旧能够成功

  • 通过查看_codeSign文件夹,看到里面是对app下的文件资源都进行了签名结果记录,里面包含info.plist,所以个人猜测苹果将包名(其实是info.plist)当做一个资源文件进行摘要,并没有检验里面的内容,只要确保是开发者签发的就可以。

你可能感兴趣的:(企业重签名步骤(不改包名) 及苹果验证猜想!)