失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > iOS逆向(1)——利用ipa重签名 3分钟iPhone安装多个微信

iOS逆向(1)——利用ipa重签名 3分钟iPhone安装多个微信

时间:2021-01-15 08:14:33

相关推荐

iOS逆向(1)——利用ipa重签名 3分钟iPhone安装多个微信

本文要达成如图效果,在一台iPhone上安装第二个微信:

准备:

Xcode微信ipa(可通过iTool进行下载)重签名脚本

步骤

打开Xcode,新建Single View App项目,名字可以随意,这里就用Wechat吧。工程根目录下新建文件夹,命名为APP,把ipa文件放入。

点击TARGETS-Wechat-Build Phases-New RunScript phasa

把以下脚本粘贴进上一步新建的Run Script

# ${SRCROOT} 它是工程文件所在的目录TEMP_PATH="${SRCROOT}/Temp"#资源文件夹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.个人证书没法签名Extentionrm -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. 重签名第三方 FrameWorksTARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ];thenfor FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*do#签名/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"donefi

command+R运行项目到真机,即可把ipa安装到iPhone上,并且不会与iPhone原有的“正版”冲突。

至此,我们只花费几分钟,就实现了我们一开始说的效果。下面我们看下原理。

原理

在iOS逆向开发时需要把下载的ipa文件安装到iOS设备上,才能进行动态分析,才能更好的玩别人的App。但是有经验的同学是知道的,下载的ipa(AppStore 和自己发布的除外) 文件是不能直接安装到自己的iPhone (未越狱)上的。为什么?因为苹果作了一个比较复杂的加密—签名。那又有同学问了什么是签名呢?为什么要签名呢?来看看这里/p/6fa292eaabce。

为了把下载的ipa 安装到我们自己的iPhone 上要先对ipa 进行重签名。

常见的 ipa 重签名方式

完全重签名

证书,mobileprovision、Bundle ID 三者信息对应一致,这种重签名方式基本上与直接对代码进行签名的效果是一样的;

优点:有效期长、稳定性高;

缺点:维护成本较高,每一个重签名的ipa都必须修改Bundle ID 并且独享一套证书和mobileprovision文件;

适用范围:对签名效果稳定性有要求的公司和团队;不完全重签名

只保证证书和mobileprovision对应一致,至于这两者与原ipa的Bundle ID 等信息是否一致则不考虑;

优点:看起来较方便维护;

缺点:实际上并没有对原ipa的签名进行完全替换,很容易重签名失败,稳定性不高,多则一两个月,少则三五天就可能发生签名失效,需要重新签名,慎用!!

适用范围:市面上出售企业证书进行重签名的个人卖家;

常见的 ipa 重签名工具

终端 使用命令行

需要记忆的命令比较多,步骤比较繁琐,效率比较低。但是显得逼格够高,装 X 利器。MonkeyDev

大牛写的工具插件,配置好就能直接用。效率比较高,跟自己创建新的Xcode 项目差不多。但是比较依赖工具,万一哪一天大牛不开心,不维护或者是需要收费了就比较尴尬Xcode 自动化重签

Xcode 简单易操作( 我就不信苹果爸爸会把Xcode 放弃或收费),可以达到类似MonKeyDev 的效果(想想自己可以写一个自动化重签的插件是不是也很牛X)。 前期需要写一些脚本可能会比较繁琐,但要是你脚本写的够好几乎是一劳永益的。以后直接拿来用就好了。

分析下脚本

从前面的步骤来看,我们的操作及其简单,因为很多工作我们已经用上面提供的脚本自动化完成了,我们不能仅满足于知其然,还需要知其所以然,下面我们分析下脚本到底做了什么事情(第2-8步)。

在Xcode 工程文件夹里边 创建一个APP 文件夹(用来存放需要重签的ipa 文件),将ipa 文件解压到本地的Temp 文件夹里边将解压出来的.app拷贝进入工程下工程生成的APP包的路径下并将名称命名为当前工程的名字(覆盖掉之前的.app文件)。删除extension和WatchAPP文件。更新info.plist文件 CFBundleIdentifier给MachO文件上执行权限重签名第三方 FrameWorks执行签名命令

之所以第4步要将ipa 包中的 Extension 文件,是因为个人证书不能重签 Extension 文件,包括 Watch 里边的 Extension。因此我们需要直接把 Watch 文件删除。

以微信为例:

Watch

PlugIns

ipa 文件中的第三方 framework 需要我们手动重签。

Frameworks

第5步更新了 info.plist,是为了修改 CFBundleIdentifier

第6步要给MackO 文件更改了执行权限。

运行app后,我们利用Xcode查看微信的布局,也是一个不错的学习方法呢。

参考:

/p/1b5592ff285d

/video/av34261047/?spm_id_from=333.788.videocard.0

如果觉得《iOS逆向(1)——利用ipa重签名 3分钟iPhone安装多个微信》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。