美文网首页iOS逆向工程
Shell脚本应用重签名

Shell脚本应用重签名

作者: KinKen | 来源:发表于2018-12-08 20:17 被阅读27次

一、前言

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

二、Shell脚本

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

三、配置重签名的Shell脚本

  • 新建工程,在Build Phases下添加Run Script

    Xcode配置执行的脚本
    在当前工程下的目录创建AppResign.sh脚本文件(命名随意),在Run Script窗口下填写${SRCROOT}/AppResign.sh,意思就是让Xcode在编译期间运行我们自定义的脚本。
  • 编写Shell脚本
    脚本第一条语句的TargetApp是当前工程下需要我们新建的文件夹,放置我们已经脱壳了的ipa包,这是一个比较简陋的脚本,还有待学习增强,日后学习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

  • Xcode自动重签&真机调试
    将我们脱壳的ipa放到TargetApp文件夹,接着command + R运行当前工程,可以看到一系列copy,install操作,最后真机运行了我们准备好的三方应用,enjoy~


    2.jpg

四、总结

  • 脚本签名可以很快地帮我们重签名三方应用,大大节省时间

  • 虽然脚本签名十分方便,但是还是要知道其中的签名原理

相关文章

  • iOS开发逆向之应用重签名(下)

    本文主要介绍通过shell脚本进行应用重签名 补充知识 在利用shell脚本重签名之前,需要了解以下知识:脚本常用...

  • shell脚本重签名应用

    前言 在iOS逆向中当我们可以使用Xcode的codesign签名工具或者Xcode进行应用重签名,但是这样容易出...

  • iOS逆向与安全2.1:砸壳重签名

    话不多说,砸壳ipa自行获取。(某某助手) 1、重签名shell 脚本自动重签名 2 保存shell脚本 保存sh...

  • Shell脚本应用重签名

    一、前言 上篇手动非脚本应用重签名 介绍了一步一步对第三方应用进行重签名,我们会觉得每次都这样手动操作的话太浪费时...

  • 通过Shell脚本对应用重签名

    通过上两篇文章(iOS 应用重签名|使用Xcode简化应用重签名)对操作应用的重签名有了一定的认识,但是好像每次都...

  • ipa包重签名

    重签名的三种方式 手动重签 \ xcode重签 \ shell脚本重签名 以微信越狱版举例 手动重签查看描述文件...

  • Android 签名工具 shell脚本

    Android 签名工具 shell脚本 signApk.sh Shell脚本代码如下:

  • 应用重签名-shell

    终端命令 工具的安装 Derek Selander 安装步骤: 下载LLDB代码,并将lldb_commands文...

  • iOS重签名(脚本签名)

    利用shell脚本重签名 简介:相对于前两篇手动签名和Xcode签名,这种就简单多了。原理同MonkeyDev插件...

  • iOS Shell脚本重签名越狱第三方APP

    之前通过Xcode对第三APP进行重签名, 这篇文章讲一下使用 Shell脚本进行重签. 对于脚本我们可以文件化,...

网友评论

    本文标题:Shell脚本应用重签名

    本文链接:https://www.haomeiwen.com/subject/uiqchqtx.html