为什么使用 ipaguard 命令行版本

  1. 命令行版本能更精确地控制符号修改后的样式,避免因随机混淆被判定为强混淆或审核被拒。
  2. 命令行版本提供符号映射文件,能够对应混淆前后的符号关系。当程序崩溃时,可通过映射关系定位原代码中引发崩溃的函数。
  3. 命令行版本可集成到自动化系统中,便于实现批量操作和 IPA 文件的集成处理。
  4. 命令行版本支持批量处理符号混淆,避免像界面版本那样逐个选择符号的繁琐操作,非常适合具备一定技术基础、能够编写脚本的高级用户。
  5. 命令行版本已对部分符号进行优化,自动将一些高风险符号设置为不混淆,并增强了对 Uniapp 的监测,减少崩溃情况。

ipaguard 命令行版本使用步骤

  1. 导出可混淆的符号
  2. 编辑修改导出的符号文件
  3. 混淆 IPA 时指定符号文件
  4. 对混淆后的 IPA 进行签名和测试
  5. 使用证书签名并提交上传

1. 导出符号文件

1ipaguard_cli parse game.ipa -o sym.json
  • game.ipa 请替换为要混淆的 IPA 文件路径
  • sym.json 请替换为导出的符号文件存放路径

2. 编辑符号文件

使用任意文本编辑器或脚本编辑 sym.json 文件。

  • 主要修改 refactorName 的值,要求长度不变避免重复
  • confuse 用于控制该符号是否被混淆处理,如发现某个符号不能混淆,可将其设为 false
  • 其他字段为辅助信息,用于判断符号是否可修改。例如,fileReferences 表示包含字符串 addEventListener 的文件,若混淆可能导致应用无法正常工作。

sym.json 文件示例片段:

 1[{
 2    "confuse": false,
 3    "name": "addEventListener:",
 4    "refactorName": "addEventListener:",
 5    "swiftReferences": [],
 6    "types": [
 7      "oc_method_name"
 8    ],
 9    "definedIns": [
10      "HBuilder"
11    ],
12    "fileReferences": [
13      "weexUniJs.js",
14      "PandoraApi.bundle\\all.js"
15    ],
16    "stringReferences": []
17  },
18  {
19    "confuse": true,
20    "name": "_isPreTTS",
21    "refactorName": "_isPreTTS",
22    "swiftReferences": [],
23    "types": [
24      "oc_method_name"
25    ],
26    "definedIns": [
27      "HBuilder"
28    ],
29    "fileReferences": [],
30    "stringReferences": []
31  }]

3. 指定符号文件混淆 IPA

1ipaguard_cli protect game.ipa -c sym.json --email ipaguard@gmail.com --image --js -o confused.ipa
  • -c 指定符号文件路径
  • --image 指定是否修改图片 MD5
  • --js 指定是否混淆 JS
  • -o 指定混淆后的 IPA 存放路径
  • --email 指定 ipaguard 登录账号(需 VIP1 及以上权限才能使用命令行混淆功能)

4. 对混淆后的 IPA 进行签名测试

1kxsign sign my.ipa -c cert.p12 -p certpassword -m a.mobileprovision -z out.ipa -i
  • my.ipa 为待签名的 IPA 文件
  • -c 指定证书路径
  • -p 指定证书密码
  • -m 指定签名用的 mobileprovision 文件路径
  • -z 指定签名后的 IPA 文件存放路径
  • -i 是否安装到当前连接的手机上(如连接了测试设备且使用开发证书,可使用此参数直接安装。也可使用 克魔助手 等工具安装测试)

注意:混淆后的 IPA 必须进行安装测试,避免因崩溃导致审核被拒。测试时请使用开发类型证书,否则无法安装。

5. 签名 IPA 后上架

签名命令同步骤 4,但不要使用 -i 参数,且必须使用发布(Distribution)类型证书。

如在 Linux 或 Windows 系统上,可使用 开心上架 工具发布和上传应用。