iOS(五)iOS应用签名
1、xcode的sodesign签名工具:
codesign指令只能识别app,不能识别ipa格式
查看签名完整性:
codesign --verify Example.app
查看签名信息:
codesign -vv -d Example.app
设置签名:
codesign -s 'iPhone Developer: Thomas Kollbach (7TPNXN7G6K)' Example.app
重签名:
codesign -f -s 'iPhone Developer: Thomas Kollbach (7TPNXN7G6K)' Example.app
2、查看系统中可用签名证书
security find-identity -v -p codesigning
3、ipa中的签名信息
Payload/YourApp.app/_CodeSignature
保存ipa中每个文件的校验
- embedded.mobileprovision,证书配置文件
4、重打包过程
a.解压iPA文件
b.删掉旧的签名文件
c.拷贝新的provision profile替换旧的embedded.mobileprovision
d.用codesign命令重签名
f.重新zip为iPA文件
b.删掉旧的签名文件
c.拷贝新的provision profile替换旧的embedded.mobileprovision
d.用codesign命令重签名
f.重新zip为iPA文件
5、iOS证书中authority
- 证书相关参考:
- https://opensource.apple.com/source/Security/Security-55471/libsecurity_codesigning/
- man手册页、Apple's code signing guide、Mac OS X Code Signing In Depth文档
- http://blog.csdn.net/phunxm/article/details/42685597
与Android不同,iOS应用的证书信息不是放在单独的文件中的,而是直接写入可执行文件的区块中
codesign工具可以查看app的签名信息,otool工具可以查看证书在可执行文件中的偏移位置和大小
内核处理的Mach-O加载命令
#
|
命令
|
内核中处理的函数
(定义在bsd/kern/mach_loader.c文件中)
|
用途
|
---|---|---|---|
0x1D | LC_CODE_SIGNATURE | load_code_signature |
代码签名
(OS X中偶尔使用,iOS中强制使用)
|
证书信息由cmd类型为LC_CODE_SIGNATURE的加载命令指定,结构体 如下
第三个字段dataoff指的是证书信息在可执行文件内的偏移位置,基础地址是对应的二进制文件的起始地址
iOS app可执行文件是胖二进制类型,他的mach-o文件起始地址为0x4000,因此证书的实际位置为0x4000 + dataoff
0 评论:
发表评论