iOS--codesign手动重新签名ipa包

签名前言:

1.获取ipa包的渠道

a.助手下载,各种助手;例:PP助手(非加密的)
b.从越狱手机里面拷贝!(加密和非加密都有)
c.iTurns下载,要求iTurns版本 12.6.3以下,可以下载ipa包(官方包,加密了的)

iOS包,签名,核心利用的工具是 codesign,利用Xcode签名,其实核心也是用的codesign。
手里有一个微信-6.7.3(越狱应用) 的压缩包(密码:02xc),

一:解压这个压缩包:

解压

二:打开命令行工具,CD到关键目录:

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 筛选关键词
两个ID

解答:通过$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.拷贝签名对应的描述文件:


图A

显示包内容

描述文件

拿到这个描述文件,拷贝到


⚠️注意注意⚠️

b.修改需要签名文件夹里面的Info.plist文件,将之前Xcode里面的BundleID替换到Info.plist文件对应的地方:


修改的地方

c.描述文件里面,有一个重要的字典,需要我们拷贝出来:
1.命令行,CD到下图路径(描述文件的地址,也就是Frameworks文件夹同级)
2.$ security cms -D -i embedded.mobileprovision 查看描述文件


需要的字典
Entitlements
    
                        application-identifier
        F8RSBY62RW.com.szlz.zhangshangCF
                        keychain-access-groups
        
                F8RSBY62RW.*
        
                        get-task-allow
        
                        com.apple.developer.team-identifier
        F8RSBY62RW

    

3.新建一个plist文件,上述字典的plist文件,可以通过Xcode创建,文件名必须是entitlements.plist


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包到手。任务完成!

你可能感兴趣的:(iOS--codesign手动重新签名ipa包)