iOS 重签名
2018-05-08 本文已影响242人
reboot_q
-
- 准备
-
1.1 获取一个破壳的 ipa 包
pp.png
可以通过 pp 助手下载现成的破壳 app, 我下载的 QQ 音乐.
将 ipa 包中的.app
文件 Copy 出来备用, 查看.app
包是否被破壳:
codesign.png$ codesign -vv -d QQMusic.app
查看 .app文件的加密状态, crypt==0可用! crypt==1, 未解密, 不可用!
$ otool -l QQMusic | grep crypt
crypt.png
-
1.2 Appledeveloper 开发者证书
通过本地 CSR 从Appledeveloper 网站申请开发者证书, 安装到钥匙串.
cer.png
查看本地证书列表, 复制名称, 备用
cerlist.png$ security find-identity -v -p codesigning
-
1.2 描述文件(.provision profile)
prov.png
新建一个 xcode 工程, 编译后会在 app 包里生成一个.mobileprovision
文件, 直接 copy 到跟.ipa 同级目录下.
-
- 配置
-
2.1 删除插件
plugin.png watch.png
将.app
中的插件全部删除
-
2.2 对 .framework 进行重签名
如果.app
中有 Framework 文件夹, 需要对其中库进行重签名(QQ音乐没有)$ codesign -fs "iPhone Developer: xxx (J5HYSJ3F78)" xxx.framework
-
2.3 修改可执行文件为可执行
$ chmod +x qqMusic
-
2.4 配置描述文件
查看本地描述文件信息:$ security cms -D -i embedded.mobileprovision
将签名信息 copy, 生成一个 .plist
文件, 让后将.plist
文件 Copy 到 .app
同级目录下.
描述.png
-
2.5 修改 bundleID
将.app
中Info.plist
文件中的bundleid
与新建的 xcode 项目Info.plist
文件中对应的bundleid
设置成相同值. -
2.6 开始签名
$ codesign -fs "iPhone Developer: xxx (J5HYSJ3F78)" --no-strict --entitlements=em.plist QQMusic.app
sign.png
- 2.7 生成
.ipa
包, 安装测试
亲测, 手动重签名成功, 🍺🍺🍺!!!