iOS的重签名

[toc]

一、重签名前后

1、支持重签名的文件及其获取方法

支持重签名的文件类型有 appName.app appName.xcarchive appName.ipa

image-20240305155525998

文件获取方法(附:跑给真机的,会多出一个 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、选择类型

appName.app的获取

2、Build + Show in Finder

image-20240305160952217

3、得到 embedded.mobileprovision 描述文件

embedded_in_finder

1、描述文件 embedded.mobileprovision 内容的查看

标准方法:

1
$ security cms -Di embedded.mobileprovision

其他方法:不能使用Sublime Text打开,因为只能看到一堆二进制数据。可以在Mac上直接空格预览文件。

其中的有效内容示例:

img

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
9
> # 新证书授权文件(可以从本地可以真机安装的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的手机应用里即可。

image-20240305162715242

二、重签方式

方式 将 可用项目的数据 –> 放进 –> 要重签的项目 将 要重签的项目 –> 放进 –> 可用项目(推荐)
主要说明 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、界面如图

image-20240305155501929

2、支持重签名的文件类型有 appName.app appName.xcarchive appName.ipa

点击链接,跳转到上文查看 支持重签名的文件及其获取方法

3、自定义新的appid、名字和版本号等,点击Start即可进行重签名ipa安装包。

image-20240305162226932

4、将ipa安装包安装到app上:

点击链接,跳转到上文查看 将ipa安装包安装到app上

一门APP证书制作工具

iOS上的几种注入动态库的方式

项目实践:一个进入app需要密码的动态库:《https://github.com/dvlpCrack/CQAppPassword_dylib.git》

其他参考文章:iOS上的几种注入动态库的方式