美文网首页
iOS APP签名原理

iOS APP签名原理

作者: Jey | 来源:发表于2020-12-29 11:18 被阅读0次

    苹果打包应用的时候需要证书才能安装,windows、安卓可以静默安装,苹果的证书机制保证了应用安装的安全性。

    • 证书原理
    • 手动重签名
    • 自动化脚本重签名

    证书加密解密原理

    1. Mac电脑中生成公钥M和私钥M,苹果服务器中存有私钥A,iPhone手机终端中存公钥A。
    2. Mac电脑通过CSR申请证书,CSR就是公钥,把他发到开发者后台,私钥A对公钥M的一次HASH加密签名,生成了开发者中的证书。下载到电脑,双击安装,在钥匙串访问证书那里,找到当前证书展开,有个专用秘钥,就是私钥M。

    查看CSR

    # 查看base64值
    cat /Users/xx/Desktop/CertificateSigningRequest.certSigningRequest
    
    # 查看CSR中包含的信息
    cd CSR当前文件目录
    openssl asn1parse -i -in CertificateSigningRequest.certSigningRequest
    
    1. 电脑私钥M对App的二进制文件HASH加密签名,加上APP可执行文件,还有证书一起打包
    2. 手机取出App里面的证书,使用手机端的公钥A解密证书,验证HASH是否正确,得到公钥M,公钥M再解密App的签名,看APP签名是否被篡改。
    截屏2020-12-30 上午10.09.48.png
    1. 这样下来只要有证书就可以在任意设备中安装了,显然不行,还是会烂装,这个时候就要讲描述文件的作用了。
      profile描述文件中包含设备ID,AppId,证书,App打包的时候就会再加上这个描述文件一起打包。
      打包后就在显示包内容就在xxx.app里面
    cd 描述文件目录
    security cms -D -I 描述文件
    

    可以看出它是一个加密了的xml文件,可以复制到xcode使用plist查看,跟info.plist一目了然


    重签名

    看一些命令,先进入.app的目录

    1. 查看打包的APP的签名信息
    codesign -vv -d xxx.app
    
    1. 查看本机所有证书
    security find-identity -v -p codesigning
    
    1. 查看可执行文件的加密信息,简称砸壳
    otool -l xxxapp名称 | grep crypt
    

    里面有个cryptid,是0的话没有加密,可能是越狱应用,1是加密应用

    手动重签名
    1. 下载一个App,找到Payload丢到桌面,里面的xxx.app
    2. 显示包内容,如果有PlugIns文件夹,删除,它是一些Extension插件文件,是存储一些免费账号的,这部分不能重签名,先干掉PlugIns。如果有Watch,里面也有,Watch也干掉
    3. 对frameworks目录下文件重签名
      借助当前xcode的证书
    显示包内容
    cd /frameworks
    codesign -fs "证书" xxx.framework
    

    注意证书要带双引号,提示xxx.framework: replacing existing signature表示成功

    1. 给可执行文件执行权限,比如微信
    chmod +x WeChat
    
    1. 修改info.plist的bundle ID

    2. 生成en.plist权限文件,内容如下

    3. 重签名

    codesign -fs "证书" --no-strict --entitlements=en.plist WeChat.app
    
    1. 使用命令打包成ipa
    zip -ry WeChat.ipa /Payload
    

    自动化重签名

    相关文章

      网友评论

          本文标题:iOS APP签名原理

          本文链接:https://www.haomeiwen.com/subject/pljfoktx.html