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

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

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

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

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

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


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

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

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

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

iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名_第1张图片
3、签名之双向签名验证原理图.png

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

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

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

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

iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名_第2张图片
1、签名之开发者真机调试证书.png

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

iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名_第3张图片
2、签名之拿到证书后钥匙串就会把证书和私钥M做关联.png

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

二、描述文件的产生


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


四、利用Xcode重签名


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


你可能感兴趣的:(iOS逆向攻防之应用签名、证书、描述文件以及手动/自动重签名)