美文网首页
iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名

iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名

作者: 溪浣双鲤 | 来源:发表于2019-10-15 23:40 被阅读0次

    接着上篇数字签名的内容,数字签名就是对原始报文数据的Hash值进行一次非对称的加密,数字签名主要使用来校验数据的;那么代码签名,顾名思义就是用来校验代码的

    代码签名是对可执行文件或者脚本进行数字签名,是用来确认软件在签名后未损坏或者被修改的措施。和数字签名原理一样,只不过签名的数据是代码而已。
    

    那么接下来我们一点点的来分析:

    1、苹果双向验证签名原理
    2、描述文件的产生
    3、使用codesign进行应用重签名
    4、利用Xcode重签名
    5、利用Shell脚本自动重签名
    

    一、苹果双向验证签名原理


    众所周知,目前主流的一些系统,比如Windows,它的盗版软件非常多并且系统安全存在一些隐患,但使用过iOS系统的都知道,iOS盗版软件很少,实际上就是因为苹果的iOS系统采用了签名验证的机制。但是苹果的需求可远远不止验证应用这么简单,还有如下的需求:

    1、安装包不需要上传到AppStore,也可以直接安装到手机上。
    2、苹果为了保证系统的安全性,又必须对安装的App有绝对的控制权。
      ·经过苹果允许才可以安装
      ·不能被滥用导致非开发完成App也能被安装
    

    为了实现这些需求,iOS的签名复杂度也就增加了很多,也就有了现在的苹果的双层签名方案。

    下面是苹果双层签名的原理流程图(画了我两个小时TnT),我在后面会一一解释其中含义:

    3、签名之双向签名验证原理图.png

    1、Mac电脑中会有一对公钥M和私钥M怎么来的?

    因为开发调试阶段,苹果的开发者工具Xcode可以把应用直接安装到iPhone真机上。

    作为iOS开发者,有一件事情是再清楚不过了,那就是:未上架调试阶段的代码想要运行在iPhone真机上,必须要在Xcode设置里面添加一个证书(Signing Certificate),
    如图1,如果没有添加这个证书,那么Xcode代码就不能跑真机调试。

    注意:公钥M和私钥M就是你在请求证书的时候,Xcode帮你生成的!

    1、签名之开发者真机调试证书.png

    图2,就是在你申请到证书之后,钥匙串会把私钥M和证书做关联。

    2、签名之拿到证书后钥匙串就会把证书和私钥M做关联.png

    后续内容会尽快补完。。。签名内容较多

    二、描述文件的产生


    三、使用codesign进行应用重签名


    四、利用Xcode重签名


    五、利用Shell脚本自动重签名


    相关文章

      网友评论

          本文标题:iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名

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