iOS逆向之旅(进阶篇) — 重签名APP(二)

使用Xcode进行重签名【这种方式就相对简单不少了】

步骤:git

1.新建一个Xcode工程github

2.从微信的ipa包解压后拿出.app文件,进行替换 xcode

image.png
3.接下操做该包

  • 删除PlugIns/Watch文件夹
  • 替换成本身的bundleid,找到info.plist进行修改

修改info.plist里面的Bundle ID 【这个Bundle ID 必须跟咱们刚新建的工厂的Bundle ID一致】 bash

image.png

  • 用证书重签名Framewroks下面的框架

签名动态库【这里须要把.app/Frameworks目录下的全部动态库进行签名】 codesign -fs "iPhone Developer: XXX (XXXXXXXX)" mars.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MMCommon.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" MultiMedia.framework codesign -fs "iPhone Developer: XXX (XXXXXXXX)" WCDB.framework微信

4.Xcode运行,即可以把该WeChat跑到本身的手机上了app

####使用XCode脚本自动签名 在项目下建立一个APP的文件夹,只要在哪一个文件夹放置ipa包,就能制动重签名安装到本身的手机【仿照Monkey】 1.先将须要重签名的ipa包放置到APP目录下框架

image.png

2.往项目添加一个脚本文件ui

image.png

3.往脚本中写入自动化签名步骤spa

image.png

脚本信息(其实这些步骤都是咱们手动签名作的事)3d

# ${SRCROOT} 这个是工程目录
TEMP_PATH="${SRCROOT}/Temp"
# 资源文件夹
ASSETS_PATH="${SRCROOT}/APP"
# ipa包路径
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"

#新建Temp文件夹
rm -rf "${TEMP_PATH}"
mkdir -p "${TEMP_PATH}"

# --------------------------------------
# 1. 解压IPA 到Temp下
# 解压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:$TEMP_APP_PATH"

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

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


# -------------------------------------
# 3. 为了是重签过程简化,移走extension和watchAPP. 此外我的免费的证书没办法签extension
echo "Removing AppExtensions"
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"

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

# 5.给可执行文件上权限
#添加ipa二进制的执行权限,不然xcode会告知没法运行
#这个操做是要找到第三方app包里的可执行文件名称,由于info.plist的 'Executable file' key对应的是可执行文件的名称
#咱们grep 一下,而后取最后一行, 而后以cut 命令分割,取出想要的关键信息。存到APP_BINARY变量里
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#这个为二进制文件加上可执行权限 +X
chmod +x "$TARGET_APP_PATH/$APP_BINARY"

# -------------------------------------
# 6. 重签第三方app Frameworks下已存在的动态库
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];
then
#遍历出全部动态库的路径
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do
echo "🍺🍺🍺🍺🍺🍺FRAMEWORK : $FRAMEWORK"
#签名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi
复制代码

####使用Monkeydev自动签名 #####步骤

image.png

  • 把砸了壳的IPA包放到Target目录下

image.png
直接运行就能够跑到咱们的手机上了 #####Monkeydev的原理 咱们到一样的地方就能发现,Monkeydev也有本身的脚本
image.png
里面也作了一样重签名的操做,这里有兴趣的本身去看,我就很少作解释了

【晚点我再把这几个项目的源码上传分享出来...】

相关文章
相关标签/搜索