iOS逆向工程

Shell脚本应用重签名

2018-12-08  本文已影响27人  KinKen

一、前言

上篇手动非脚本应用重签名 介绍了一步一步对第三方应用进行重签名,我们会觉得每次都这样手动操作的话太浪费时间,能不能让Xcode自动帮我们完成这些骚操作呢?当然可以,Xcode提供了在工程编译期间Run Script的功能,让我们可以在编译期间执行我们的脚本。

二、Shell脚本

Shell脚本(英语:Shell script),又称Shell命令稿程序化脚本,是一种计算机程序使用的文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与解释型语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。

三、配置重签名的Shell脚本

#当前项目目录下的TargetApp文件夹,里面放ipa包
ASSETS_PATH="${SRCROOT}/TargetApp"

#临时目录
TEMP_PATH="${SRCROOT}/Temp"

#目标ipa包路径
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"

#每次运行前都清空Temp文件夹
rm -rf "${SRCROOT}/Temp"
mkdir -p "${SRCROOT}/Temp"

#-----------------------------------------#
#解压缩ipa
unzip -oqq "${TARGET_IPA_PATH}" -d "${TEMP_PATH}"

#获取解压后的app路径
TEMP_APP_PATH=$(set -- "${TEMP_PATH}/Payload/"*.app;echo "$1")

#获取当前工程编译app的路径
TARGET_APP_PATH="${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app"

#清空一下工程生成的App包
rm -rf "${TARGET_APP_PATH}"
mkdir -p "${TARGET_APP_PATH}"

#-----------------------------------------#

#将三方应用app拷贝到当前工程编译app的路径
cp -rf "${TEMP_APP_PATH}/" "${TARGET_APP_PATH}"

#删除一些免费开发者账户签名不了的内容
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"

#修改三方应用的Info.plist文件
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"

# 拿到MachO文件的路径
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#上可执行权限
chmod +x "$TARGET_APP_PATH/$APP_BINARY"

#重签Frameworks
TARGET_FRAMEWORKS_PATH="${TARGET_APP_PATH}/Frameworks"
if [ -d "${TARGET_FRAMEWORKS_PATH}"]; 
    then
for FRAMEWORK in "${TARGET_FRAMEWORKS_PATH}/"*
do
    /usr/bin/codesign --force --sign "$EXPANDED_CODE_SGIN_IDENTITY" "$FRAMEWORK"
done
fi

四、总结

上一篇下一篇

猜你喜欢

热点阅读