文章背景
有人盗用企业证书进行打包,有些网页工具bundle id随便写,几分钟就可以完成打包。我们知道正常的打包需要以下几个条件
- 企业证书
- 企业开发者账号,或企业团队成员
- 在线创建.mobileprovision文件
证书可以泄露,有些人安全意识薄弱,把证书放在网上传输,或者上传到了一些平台。但是.mobileprovision文件需要登录开发者账号才能创建,即使拿到证书也没用啊。难道.mobileprovision文件可以编辑或者伪造?于是研究了一下 .mobileprovision 文件的修改。
基础介绍
.mobileprovision 文件是由苹果生成的二进制文件,内部结构完全由苹果定义。
.mobileprovision 文件用于应用的签名和授权。它包含了应用程序标识符、开发者证书、设备列表等信息。直接修改二进制文件极大可能导致文件损坏或无效。
1、查看 .mobileprovision
.mobileprovision文件是二进制文件,使用文本编辑器(如TextEdit、Sublime Text、Visual Studio Code等)打开.mobileprovision文件,会看到一些乱码。
使用Xcode查看mobileprovision文件:
这种方式只能看到 mobileprovision文件的部分内容,无法编辑。
使用终端指令查看*mobileprovision文件:
security cms -D -i /path/to/your.mobileprovision
可以查看mobileprovision文件所有内容,无法编辑。
2、编辑.mobileprovision
通过终端指令的方式编辑.mobileprovision:
使用命令行工具security导出.mobileprovision文件的内容,将其保存为文本文件:
security cms -D -i /path/to/MobileProvision.mobileprovision > output.plist
打开导出的output.plist文件,可以使用文本编辑器或命令行工具进行修改。找到”name”键所对应的值,并进行修改。
修改完成后,将output.plist文件重新导出为 .mobileprovision文件:
security cms -D -i output.plist -o modified.mobileprovision
执行完 3 后,终端报错,但仍旧生成了 modified.mobileprovision。
双击打开 modified.mobileprovision,Xcode报错:
UUID可以理解为文件的唯一标识,在linux中经常用,因为linux一切皆文件,所以你的硬件设备也是文件,他也会有UUID。
每个文件都有UUID,UUID是通过系统自动生成的。我们无法操控。
3、结论
苹果不允许我们手动修改.mobileprovision文件;
修改 .mobileprovision文件 前后,该文件的 MD5值发生变化;
经测试,在删除 .mobileprovision文件后,Xcode也会提示UUID属性缺失。猜测UUID就是简单的UUID,XcodeUUID错误,也只是新的.mobileprovision文件没有通过过苹果认证然后报错的,只是就是展示了这个错误而已。
在线的打包工具应该是破解了.mobileprovision文件的生成方式,所以仅需要企业证书,自己生成.mobileprovision文件。