美文网首页
应用重签名-shell

应用重签名-shell

作者: lmfei | 来源:发表于2020-03-15 08:51 被阅读0次

终端命令

//列出钥匙串里可签名的证书
security find-identity -v -p codesigning
//查看描述文件的信息 
security cms -D -i embedded.mobileprovision
//获取App的头文件
class-dump -H WeChat -o ./headers/
//修改文件权限
chomd -R 777 文件路径 

工具的安装

Derek Selander

安装步骤:

  1. 下载LLDB代码,并将lldb_commands文件夹放到自己想放的目录下
  2. 在根目录下找到.lldbinit文件,没有则新增
  3. 编辑.lldbinit文件,在最后加上command script import xxx/lldb_commands/dslldb.py
yololib

安装步骤:

  1. 下载yololib源码,然后编译生成可执行文件
  2. 将可执行文件放入/usr/local/bin中即可

通过Xcode进行重签名

  1. 下载应用包
  2. 拷贝到自己的工程里
  3. 签名
  • 新建工程,并配置可用证书,然后在真机上Run一下
    注:如果不Run,后面配完脚本运行不到手机上
  • 工程根目录创建APP文件夹,并拷入下载下来的ipa包
  • 将shell脚本放入工程根目录下(shell代码下面介绍)
  • Xcode配置执行脚本Build Phases -> + -> New Run Script Phases
    ,并运行
    注意:文件夹不能有中文,否则可能编译失败

代码注入

  • 自己生成一个framework,要导入到工程,并要在LoadCommands中
    如何查看是否成功写入LoadCommands中?
    通过MachOView可以查看可执行文件中的LoadCommands的内容
  • 导入成功后,即可以在自己的framework里写hook代码了,比如方法交换!!!

shell脚本的内容

shell的主要流程:

  1. 解压需要重签名的砸壳应用的ipa(如何砸壳
    )
otool -l 可执行文件路径 | grep crypt //查看ipa文件是否砸壳
已砸壳
  1. 将解压后的内容拷贝到临时文件夹下
  2. 删除无法签名的的Extension
  3. 更新plist文件中的CFBundleIdentifier
  4. 给Mach-O文件执行权限
  5. 重签第三方FRAMEWORKS
  6. 重签本应用
  7. 灵(dong)魂(tai)注入
# ${SRCROOT} 工程文件根目录
TEMP_PATH="${SRCROOT}/Temp"
#新建APP文件夹,放入需要重签名的ipa包(包需要砸过壳)
ASSETS_PATH="${SRCROOT}/APP"
#处理后ipa包路径
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"
#清空Temp文件夹
rm -rf "${SRCROOT}/Temp"
mkdir -p "${SRCROOT}/Temp"

#----------------------------------------
# 1. 解压ipa到Temp目录下
unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"
# 解压的临时APP的路径
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
# echo "路径是:$TEMP_APP_PATH"

#----------------------------------------
# 2. 将解压出来的.app拷贝到工程里
# BUILT_PRODUCTS_DIR 工程生成的APP包的路径
# TARGET_NAME target名称
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
echo "工程中app路径:$TARGET_APP_PATH"

rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"

#----------------------------------------
# 3. 删除extension和WatchAPP.个人证书无法签名Extention
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"

#----------------------------------------
# 4. 更新info.plist文件 CFBundleIdentifier
#  设置:"Set : KEY Value" "目标文件路径"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"

#----------------------------------------
# 5. 给MachO文件执行权限
# 拿到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"

#----------------------------------------
# 6. 重签名第三方 FrameWorks
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];
then
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do

#签名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi

#注入自己的framework
yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/xxx.framework/xxx"

生活如此美好,今天就点到为止。。。

相关文章

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

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

  • 应用重签名-shell

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

  • shell脚本重签名应用

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

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

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

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

    本文主要介绍重签名的几种方式,以及如何对应用进行重签名, 应用重签名 从之前《iOS逆向应用签名》中可知,签名是指...

  • Shell脚本应用重签名

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

  • ipa包重签名

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

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

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

  • 应用重签名

    手动砸壳主要是了解下过程跟原理,以微信为例子 1. 获取砸壳后的ipa 参考iOS砸壳 2. 获取签名证书和ent...

  • 应用重签名

    一、codesign Xcode提供了签名工具,codesign,我们通过几个命令就可以完成重签名 终端命令 $s...

网友评论

      本文标题:应用重签名-shell

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