签名前言:
1.获取ipa包的渠道
a.助手下载,各种助手;例:PP助手(非加密的)
b.从越狱手机里面拷贝!(加密和非加密都有)
c.iTurns下载,要求iTurns版本 12.6.3以下,可以下载ipa包(官方包,加密了的)
iOS包,签名,核心利用的工具是 codesign,利用Xcode签名,其实核心也是用的codesign。
手里有一个微信-6.7.3(越狱应用) 的压缩包(密码:02xc),
一:解压这个压缩包:
二:打开命令行工具,CD到关键目录:
三:根据不同命令,查看.app文件:
我们利用codesign,查看一下该包的信息:
$ codesign -d WeChat.app 查看可执行文件路径;
$ codesign -d -v WeChat.app 查看更详细的信息;
$codesign -d -vv WeChat.app 查看更详细的信息,包含签名信息;
附:相关命令合集
$security find-identity -v -p codesigning 列出钥匙串里可签名的证书
$Codesign –fs “证书串” 文件名 强制替换签名
$Chmod +x 可执行文件 给文件添加权限
$security cms -D -i ../embedded.mobileprovision 查看描述文件
$codesign -fs “证书串” --no-strict --entitlements=权限文件.plist APP包
$Zip –ry 输出文件 输入文件 将输入文件压缩为输出文件
如何重新签名
一。需要我们自己的证书
$security find-identity -v -p codesigning 查看我们钥匙串里面的证书
二。cd到包目录下 $cd WeChat.app
三。显示包内容,看看目录结构
四。利用otool查看核心文件,并在桌面生成详情文件123.txt,$otool -l Wechat > ~/Desktop/123.txt
东西太多,我们只看核心的东西。
因为我们的压缩包是破解包,所以加密是0,正版的包,加密ID是1
也可以通过$otool -l Wechat | grep crypt 筛选关键词
解答:通过$file Wechat
因为包含两种架构,也叫胖二进制文件,可以拆分。
签名关键:
一:干掉不能签名的东西
二:需要签名的列表:
1:Frameworks
a.Frameworks文件里面的所有文件
b.CD到Frameworks文件夹下面,
c.之前通过命令:security find-identity -v -p codesigning 获取到的本地列表,取一个可用的证书,
我们这里取了图片上的例子:
d.利用命令:$codesign -fs "上一条命令获取的字符串" ConfSDK.framework
(例子:上一条命令获取的字符串:" iPhone Distribution: Shenzhen Tencent Network Technology Co., Ltd. (F8RSBY6WWW) ”)
签名成功。依次签Frameworks文件夹里面的所有文件
ConfSDK.framework
GPUImage.framework
mars.framework
....
2:描述文件
问题,描述文件哪里来:打开Xcode,我们签名的证书对应的项目最好。
a.拷贝签名对应的描述文件:
拿到这个描述文件,拷贝到
b.修改需要签名文件夹里面的Info.plist文件,将之前Xcode里面的BundleID替换到Info.plist文件对应的地方:
c.描述文件里面,有一个重要的字典,需要我们拷贝出来:
1.命令行,CD到下图路径(描述文件的地址,也就是Frameworks文件夹同级)
2.$ security cms -D -i embedded.mobileprovision 查看描述文件
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>F8RSBY62RW.com.szlz.zhangshangCF</string>
<key>keychain-access-groups</key>
<array>
<string>F8RSBY62RW.*</string>
</array>
<key>get-task-allow</key>
<true/>
<key>com.apple.developer.team-identifier</key>
<string>F8RSBY62RW</string>
</dict>
3.新建一个plist文件,上述字典的plist文件,可以通过Xcode创建,文件名必须是entitlements.plist
这个entitlements.plist是重要文件,我们就是用它来签名整个app包,
4.重签名来了。
a. cd到entitlements.plist和WeChat.app 同在目录;
b. $codesign -fs "获取的证书字符串" --no-strict --entitlements=entitlements.plist WeChat.app
c.验证:$codesign -d -vv WeChat.app
d.WeChat.app转换成ipa文件,app文件无法直接安装到手机,我们手机安装需要的是ipa,先将entitlements.plist 文件和.app拆分,
通过命令$ zip -ry WeChat.ipa Payload
ipa包到手。任务完成!