iOS 重签名

iOS 重签名

获取一个破壳的ipa包(可通过PP助手下载或自己砸壳)

将ipa文件解压

1
$ codesign -vv -d xxxx.app

查看ipa信息

1
2
3
4
5
6
7
8
9
10
11
12
13
Executable=/Users/zhaoyichao/Downloads/Payload/Payload/JD4iPhone.app/JD4iPhone
Identifier=com.huantu.ziyouxing.beta
Format=app bundle with Mach-O universal (armv7 arm64)
CodeDirectory v=20200 size=497945 flags=0x0(none) hashes=15553+5 location=embedded
Signature size=4735
Authority=iPhone Developer: yingsan cui (92QAU5S3Y9)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA // (unavailable)为已破壳
Signed Time=2018年11月13日 下午6:02:36
Info.plist entries=51
TeamIdentifier=L24QS32T7H
Sealed Resources version=2 rules=13 files=5421
Internal requirements count=1 size=188

查看.app加密状态 (在.app目录下)

1
$ otool -l JD4iPhone | grep crypt
1
2
3
4
5
6
7
JD4iPhone.app otool -l JD4iPhone | grep crypt
cryptoff 16384
cryptsize 53952512
cryptid 0 // 已解密
cryptoff 16384
cryptsize 57409536
cryptid 0

查看本地证书列表

1
$ security find-identity -v -p codesigning

重签名

  1. 删除 watch 目录和 PlugIns 目录(codesign签名不支持extention)

  2. 对 framework 进行签名

    对Framework文件夹下的framework进行签名

    1
    $ codesign -fs "iPhone Developer: xxx (92QAU5S3Y9)"  xxx.framework
  3. 修改主文件为可执行

    1
    $ chmod +x JD4iPhone
  4. 新建项目生成 embedded.mobileprovision

    1
    $ security cms -D -i embedded.mobileprovision

    复制信息 保存为em.plist文件

  5. 签名

  6. $  codesign -fs "iPhone Developer: xxx (92QAU5S3Y9)" --no-strict --entitlements=em.plist JD4iPhone.app
    

方法2

利用iOS App Signer (推荐) 简单方便,傻瓜操作