以下是重构后的内容:

1. 获取应用的IPA文件

a. 打开爱思助手,连接手机,点击引用游戏,搜索想要的APP

b. 在下载界面点击打开文件夹,获取IPA文件

c. 解压IPA包,将IPA包转换为zip包,然后进行解压。

2. 开始反编译IPA包

a. 查看包信息,进入Payload文件目录,例如执行以下命令:codesign -d -v WeChat.app 或者 codesign -d -vv WeChat.app

b. 执行命令,列出钥匙串里可签名的证书:security find-identity -v -p codesigning

c. 首先进入.app包里面,执行命令查看是否加密:otool -l WeChat | grep crypt

如果cryptid等于0表示不加密,可以重签名。

如果cryptid等于1表示加密,不可以重签名。(一般越狱包是不加密的)

d. 重新编辑Frameworks文件夹里面的文件,切换到Frameworks文件夹,逐个执行签名命令。例如:codesign -fs "Apple Development: Brian Gasparini (QG5XRSP5T6)" Adjust.framework

e. 获取描述文件,例如

f. 修改越狱包里面的info.plist文件的 Bundle identifier 为拉进来的描述文件的Bundle identifier

g. 查看描述文件里面的内容,注意里面的权限信息,执行命令查看:security cms -D -i embedded.mobileprovision

创建一个plist文件,命名为:entitlements.plist

使用以下命令将描述文件和entitlements.plist拉进去并签名:codesign -fs "证书串" --no-strict --entitlements=权限文件.plist APP包

例如:codesign -fs "Apple Development: Brian Gasparini (QG5XRSP5T6)" --no-strict --entitlements=entitlements.plist TemplateRoy.app

最后查看是否签名成功。

、重新打包。首先,切换到Payload目录,然后输入以下命令:zip -ry 输出文件 输入文件。这将把输入文件压缩为输出文件,打包成功后会生成一个IPA文件包,接下来就可以安装了。

j、接下来,使用Xcode进行安装。点击Xcode中的"+"号,然后选择刚刚生成的IPA文件进行安装。

3、利用Xcode调试第三方应用

a、创建一个与第三方应用相同的包名,例如WeChat。然后按照上述步骤重签名Framework文件夹。在info.plist文件中更换Bundle identifier。

b、接着,替换一下.app文件,将第三方应用放入其中并替换现有内容。然后运行项目工程。

4、自动化脚本重签名Xcode调试第三方应用

a、创建一个与第三方应用相同的包名,例如TemplateRoy。然后将脚本文件夹拖放到工程目录中,该文件夹包含脚本和第三方IPA文件。

b、在Xcode中编写脚本并执行。直接运行工程即可。

c、Shell脚本文件

以下是重构后的代码:

```bash

# 资源目录,里面放的是ipa包

ASSETS_PATH="${SRCROOT}/SignatureShell/"

# temp目录,放置解压的APP

TEMP_PATH="${SRCROOT}/Temp"

# 目标的ipa包路径

TARCET_IPA_PATH="${ASSETS_PATH}*.ipa"

# 清空Temp文件夹

rm -rf "${TEMP_PATH}"

# 创建Temp文件夹

mkdir -p "${TEMP_PATH}"

# -------解压缩--------

unzip -oqq "${TARCET_IPA_PATH}" -d "${TEMP_PATH}"

# 解压的临时APP路径

TEMP_APP_PATH=$(set -- "${TEMP_PATH}/Payload/*.app"; echo "$1")

echo "临时路径:$TEMP_APP_PATH"

# 拷贝APP路径

TARGET_APP_PATH="${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app"

# 拷贝APP

cp -rf "${TEMP_APP_PATH}/" "${TARGET_APP_PATH}"

# 强制非必要文件删除

rm -rf "${TARGET_APP_PATH}/PlugIns"

rm -rf "${TARGET_APP_PATH}/Watch"

# 修改info.plist,通过PlistBuddy修改

/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER)" "${TARGET_APP_PATH}/Info.plist"

# 重签第三方的Frameworks

TARGET_FRAMEWORKS_PATH="${TARGET_APP_PATH}/Frameworks"

for FRAMEWORK in "${TARGET_FRAMEWORKS_PATH}"* do

/usr/bin/codesign --force --sign "${EXPANDED_CODE_SIGN_IDENTITY}" "${FRAMEWORK}"

done

```