@builder wrote:
目的:实现非官方codesign工具,能在linux环境下正常签名app,并且在非越狱的设备上安装运行。
ios12之前的工具有: ldid、isign、jtool 、以及本人用C++参考前面的工具实现了一个集成重签名和注入的工具
但是,现在以上的工具以及我能找到的所有第三方工具中没有一个可以通过ios12的签名校验。在这里我将自己研究的内容简单分享一下:
codesign签名段数据简介
简单来说就是由一个“索引块”和多个“功能块”组成,每个“功能块”表示某一种用途。
–SuperBlob(索引)
–CodeDirectory(程序的bundle id,各个数字签名)
–Requirements(这里应该就是苹果文档里对应的internal requirements,各个requirement使用codesign requirement language表示,最终内容是text->binary的形式,即compiled后的内容)
–Entitlements(这里就是entitlement文件了)
–Certificates (将CodeDirectory的数据作为数据源进行非对称加密后的密文)官方文档收集
CodeSigningGuide
codesign官方源码我的问题
(1) CMS是如何在codesign的过程中添加的?添加的什么信息?与mobileprovision是否有关系?
(2) 苹果的openssl采用的是自己开发的LibreSSL,和标准的openssl有差异,这种差异会不会导致触发ios12的检测机制从而判断为非官方codesign?
(3) 能否实现非官方的能在linux环境下运行的兼容ios12的codesign?我目前的研究进展
- 从二进制mach-o文件的格式来讲,已经完全实现除了Certificates段以外的与官方codesign所有信息的匹配;
- 而老版本的官方codesign签出来的app是可以通过ios12校验的;
- 剩下唯一需要研究的就是苹果官方的LibreSSL是如何将CMS信息添加入Certificates段。
Posts: 1
Participants: 1