越狱
准备工作
- 手机型号:iPhone 6p
- 手机系统:12.4.4
- 越狱工具:unc0ver
unc0ver支持11.0~14.3
版本,并且越狱后可重置回未越狱状态,官网地址:https://unc0ver.dev
unc0ver.dev上有具体的操作步骤,这里不再赘述,下面是我采用Xcode+Shell脚本方式完成越犾的一个过程记录。
Xcode + shell
- 通过Xcode新建一个工程,然后运行到真机上,完成app签名。
- 在工程目录下创建一个App目录,然后再创建一个内容如下的appsign.sh文件:
TEMP_PATH="${SRCROOT}/Temp" APP_PATH="${SRCROOT}/App" # 目标ipa包所在路径 TARGET_IPA_PATH="${APP_PATH}/*.ipa" # 清空Temp目录 rm -rf "${TEMP_PATH}" mkdir -p "${TEMP_PATH}" # 1.解压ipa包到Temp目录下。 # -o代表在不提示的情况下覆盖现有文件, -qq禁止打印信息 # -d 将文件解压缩到的可选目录 unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH" # 拿到解压的临时的APP的路径 TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1") # 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. 删除PlugIns和Watch 个人证书签不了Extention rm -rf "$TARGET_APP_PATH/PlugIns" rm -rf "$TARGET_APP_PATH/Watch" # 4. 更新info.plist文件 CFBundleIdentifier # 因为是plist文件,需要使用系统工具PlistBuddy进行设置:"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 #使用codesign进行签名 /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK" done fi
- 下载unc0ver,把下载下来的ipa包放到工程App目录下
- 在Xcode->Targets->Build Phases中添加Run Script
- 运行后安装unc0ver到手机上,运行unc0ver,点击底部Jailbreak开始越狱,中间需要重启手机。如果需要重置在设置中打开Restore RootFS选项,然后重置。
小知识:生成ipa包
复制xx.app包到一个Payload目录
下,然后通过zip -ry xx.ipa Payload/
生成ipa包后通过Xcode安装到手机上。
砸壳
- 在 Cydia 中添加软件源 http://apt.wxhbts.com/,搜索CrackerXI(CrackerXI App脱壳工具),下载安装。
- 回到SpringBoard,打开CrackerXI,在AppList选择要砸壳的App,砸完后记录下ipa包的路径。
- 手机与电脑处于同一网络下,在mac终端通过
ssh root@手机ip
连接(如果手机没安装openSSH,在Cydia中搜索openSSH并安装),输入root初始初始密码alpine。连接成功后输入passwd修改root密码,成功后logout退出ssh。 - 在终端执行
scp root@手机ip:"/var/mobile/Documents/CrackerXI/xxx_CrackerXI.ipa" ~/Desktop
拷贝砸壳后的ipa包到电脑桌面。 - 通过
unzip -oqq ipa包路径 -d 临时路径
,进入临时路径中的payload中的xx.app中,通过otool -l xx | grep crypt
查看cryptid,如果为0说明砸壳成功。
代码注入
- 下载yololib(https://github.com/KJCracks/yololib),编译后放到工程目录下(或者直接放到usr/bin下)。
- 在工程中创建一个Framework暂时叫它HookTest,创建个OC类,然后在类中添加+(void)load方法。
- 在上面的appsign.sh中加入
然后执行。./yololib "\$TARGET_APP_PATH/\$APP_BINARY" "Frameworks/HookTest.framework/HookTest"
未完待续…
代码注入成功了,通过class-dump
和Xcode的Debug View Hierarchy
可以拿到部分信息,通过Method Swizzing可以进行一些hook操作。
TODO://工具分析。
转载:https://blog.csdn.net/nsf724947554/article/details/115017248
查看评论