一、重签名前后
1、支持重签名的文件及其获取方法
支持重签名的文件类型有 appName.app appName.xcarchive appName.ipa
文件获取方法(附:跑给真机的,会多出一个 embedded.mobileprovision 文件)
| 文件类型 | 获取方式 | 获取注意点 | |
|---|---|---|---|
| appName.app | 方法1:可以直接通过build获得 方法2:Product -> Archive -> 查看包内容 -> Products/Applications/xxx.app |
如果是要给真机安装,则build时候应该选真机(如Any iOS Device)。 (从pp助手等平台下载的肯定是针对真机的) 否则重签名安装后无法正常打开 |
|
| appName.xcarchive | Product -> Archive | ||
| appName.ipa | Product -> Archive -> 查看包内容 -> Products/Applications/xxx.app |
测试时候自己给自己提供上述文件的方法如下:
1、选择类型
2、Build + Show in Finder
3、得到 embedded.mobileprovision 描述文件

1、描述文件 embedded.mobileprovision 内容的查看
标准方法:
1 | security cms -Di embedded.mobileprovision |
其他方法:不能使用Sublime Text打开,因为只能看到一堆二进制数据。可以在Mac上直接空格预览文件。
其中的有效内容示例:
2、提取描述文件 embedded.mobileprovision 内容生成签名需要的 entitlements.plist
2.1、方法1:直接copy
利用Xcode新建一个plist文件,以代码形式打开plist文件(open As->Source code)并粘贴相应内容。
2.2、方法2:使用脚本
脚本见:《get_entitlements_plist_file_from_embedded_mobileprovision_file.sh》
脚本的使用见:《resign_ipa.sh》
1
2
3
4
5
6
7
8 新证书授权文件(可以从本地可以真机安装的APP中通过显示包内容来看到)
RESIGN_NEED_MOBILEPROVISION_PATH="/Users/qian/Documents/重签名/TSDemoDemo.app/embedded.mobileprovision"
从 embedded.mobileprovision 获取生成签名需要的 entitlements.plist
RE_SIGN_NEW_ENTITLEMENST="$SRCROOT/new_entitlements.plist"
RE_SIGN_NEW_ENTITLEMENST="/Users/qian/Documents/重签名/plist_from_mp.plist"
sh "$CurrentDIR_Script_Absolute/get_entitlements_plist_file_from_embedded_mobileprovision_file.sh" \
-embedded_mobileprovision_F "$RESIGN_NEED_MOBILEPROVISION_PATH" \
-entitlements_plist_hope_path "$RE_SIGN_NEW_ENTITLEMENST"
2、重签名结果的使用/将ipa安装包安装到app上
重签名后得到新签名的ipa文件。
方式1:拖动ipa到已连接到Xcode的手机应用里
如下图拖动ipa到已连接到Xcode的手机应用里即可。
二、重签方式
| 方式 | 将 可用项目的数据 –> 放进 –> 要重签的项目 | 将 要重签的项目 –> 放进 –> 可用项目(推荐) |
|---|---|---|
| 主要说明 | 从 embedded.mobileprovision 获取以下信息 1、替换要重签的embedded.mobileprovision 2、获取数据并生成签名需要的 entitlements.plist 3、获取数据并修改签名必须保持一致的 bundle id |
1、扔进可用项目后,修改要重签的app的bunle id |
| 签名其他 Framework | 同左 | |
| 好处 | 只需在重签项目中对各值进行修改/签名。 | 可通过运行可用项目,并在BuildPhases内添加脚本, 从而进行调试 |
| 示例1 | iOS逆向 应用重签名+微信重签名实战 | IOS代码注入APP&重签实战 |
| 示例2 | 教你实现一个 iOS 重签名工具 |
三、重签名脚本实现
1、将 要重签的项目 –> 放进 –> 可用项目(推荐)
自己的项目: https://github.com/dvlpCrack/app_resign_box.git app重签的工具盒(将要重签的app放入此盒即可重签)
该项目中包含 appSign.sh 脚本
2、将 可用项目的数据 –> 放进 –> 要重签的项目
自己的脚本代码: sign/resign_ipa.sh
四、重签名工具
1、重签名工具 ios-app-signer
使用介绍
1、界面如图
2、支持重签名的文件类型有 appName.app appName.xcarchive appName.ipa
点击链接,跳转到上文查看 支持重签名的文件及其获取方法
3、自定义新的appid、名字和版本号等,点击Start即可进行重签名ipa安装包。
4、将ipa安装包安装到app上:
点击链接,跳转到上文查看 将ipa安装包安装到app上
五、免证书的重签名工具
免证书的重签名工具:sideloadly
它和 iOS App Signer 的区别如下。
| 序号 | 特性 | Sideloadly![]() |
iOS App Signer![]() |
|---|---|---|---|
| 1 | 适合场景 | 无证书情况下,安装三方ipa | 有证书情况下,将打包好的设备直接重签给其他测试设备,省去重新打包的耗时过程 |
| 2.1 | 使用门槛 | 低,只需一个Apple ID | 高,必备开发者证书和描述文件 (Provisioning Profile) |
| 2.2 | 能安装的设备 | 绑定到“Apple ID + 设备序列号(UDID)”,只有一台设备 | 绑定到“证书 + 描述文件”,能安装到该描述文件里列出的设备列表 |
| 3.1 | 核心功能 | 签名 + 安装,一条龙服务 | 仅签名,生成一个已签名的IPA文件 |
| 3.2 | 操作流程 | 选择IPA → 连接手机 → 输入Apple ID → 自动安装到手机 | 选择IPA → 选择证书 → 点击生成 → 得到一个IPA文件 (装手机还需其他工具,如爱思助手) |
| 3.3 | 电脑连接手机 | 需要,用于直接安装 | 不需要,可以离线批量处理IPA文件 |
| 4 | 操作系统 | Windows 和 macOS | 仅 macOS |
| 5 | 主要用户 | 想要安装第三方应用或修改版App的普通用户 | 需要批量处理、研究应用签名机制的开发者或极客 |
iOS上的几种注入动态库的方式
项目实践:一个进入app需要密码的动态库:《https://github.com/dvlpCrack/CQAppPassword_dylib.git》
其他参考文章:iOS上的几种注入动态库的方式
