iOS应用重签名
知识点准备
MacOS用户组 文件权限
Unix Linux 属于多用户、多任务

我们关注第一列(权限):
eg:drwxr-xr-x
d | rwx | r-x | r-x |
---|---|---|---|
文件类型(文件夹d 、文件- ) |
读、写、执行权限 | 读、执行权限 | 读、执行权限 |
User | Group | Other |
为了配置方便,结合可以多组合方式,采用1左移进制位表示
r w x
4 2 1
100 010 001
组合方式有
0 1 2 3 4 5 6 7
--- --x -w- -wx r-- r-x rw- rwx
指令修改某个文件/文件夹的权限命令:chmod
改变权限方式有两种:
- 1、通过数字类型改变
eg:chmod 755 + 文件名
- 2、通过符号类型改变
格式:chmod [u、g、o、a] [+(加上)、-(除去)、=(设置)] [r、w、x] 文件名称
eg:chmod a+ fileName
a可省略
【+加入, -减去,=设置】
codesign手动重签名
1、删除插件PlugIns
文件和Watch
文件(带插件的文件都删除)
2、定位到Frameworks
将文件夹中所有的framework
进行重签名。
可先查看自己当前电脑有哪些可用于签名的证书,使用命令查看:security find-identity -v -p codesigning

选择一个证书对Frameworks中的framework逐个重签名,使用命令
codesign -fs "证书" xxx.framework
3、查看MachO文件是否有可执行权限,没有则添加可执行文件
使用命令查看权限列表:ls -l + MachO文件名
添加可执行权限:chmod +x MachO文加名
4、新建一个工程,拷贝描述文件拷到APP
包中,并且修改Bundle Identifier
选择签名framework
时的拉取描述文件,编辑成功后,
Show in Finder
将描述文件(embedded.mobileprovision
)拷到要重签名的APP
包中,并且修改掉info.plist
文件中的Bundle Identifier
保存。
将新建工程安装到到手机上。
5、拿到权限文件,用权限文件重签APP
包
cd到描述文件路径下,通过命令security cms -D -i embedded.mobileprovision
查看描述文件。找到Key:Entitlements
对应的Value:<dict>权限</dict>
复制,在新建工程中新建plist文件,Open as
-> Source Code
将其粘贴并保存,修改plist
文件名为:entitlements.plist
。

将
plist
文件拷贝到APP
包同级目录下。使用命令:codesign -fs "证书" --no-strict --entitlements=entitlements.plist WeChat.app
重签APP
包
6、通过Window
->Devices and Simulators
完成安装

Xcode重签名
1、删除插件PlugIns
文件和Watch
文件(带插件的文件都删除)
2、定位到Frameworks
将文件夹中所有的framework
进行重签名。
可先查看自己当前电脑有哪些可用于签名的证书,使用命令查看:security find-identity -v -p codesigning

选择一个证书对Frameworks中的framework逐个重签名,使用命令
codesign -fs "证书" xxx.framework
3、新建一个
MachO
文件同名),选择与上面使用与重签名framework的证书一致,选择可用的Bundle Identifier
,拉取描述文件----Provisioning Profile
,将该Bundle Identifier
替换到需要重签名应用包的info.plist
的Bundle Identifier
,然后运行该工程到手机。4、最后将需要重签名的应用包拷贝替换掉新建工程的
Products
文件中以.app
后缀的文件,然后重新command + R
重签名就成功了。
脚本重签名
步骤简单得一笔,其就是根据Xcode的重签流程,使用脚本做了一遍。
1、将新建工程,将其装到手机上
2、添加脚本,在运行一次
