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


两种架构,通用二进制文件

因为包含两种架构,也叫胖二进制文件,可以拆分。

签名关键:

一:干掉不能签名的东西
干掉三方

QQ20190604-043139@2x.png
二:需要签名的列表:
1:Frameworks

a.Frameworks文件里面的所有文件


QQ20190604-043323@2x.png

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 查看描述文件


需要的字典
<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


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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么要重签名? 1、在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等)。修改完成以...
    Yochi阅读 8,667评论 9 11
  • 一.重签名是啥 越狱手机已经破解了系统权限,不需要验证签名,所以可以安装任何macho文件(任何应用) 想要把一个...
    李永开阅读 2,987评论 0 1
  • 七律·长征作者: 毛泽东红军不怕远征难,万水千山只等闲。五岭逶迤(wēi yí)腾细浪,乌蒙磅礴(páng bó)...
    冰雨9527阅读 832评论 0 0
  • 声明:此文章仅是学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,否则一律与笔者无关。 Ap...
    黑夜梦阅读 1,608评论 0 2
  • 一、前言 逆向过程中,我们有时候需要利用Xcode来调试三方应用,这是应用重签名的目的之一,如果我们改变了应用的二...
    KinKen阅读 587评论 0 2