xcode通过脚本调试第三方app

先创建一个与要调试的app名称相同的项目(不是必须,但是要修改脚本)
然后就是在同一个目录下创建相应的目录。这个不是必须修改脚本就是了。
第一个目录(TEMP)是放已经解密的app

第二个目录APP目录是生成后会拷贝到这里的。里面不要放东西。

脚本如下:

#${SRCROOT} 它是工程文件所在的目录
TEMP_PATH="${SRCROOT}/Temp"
#资源文件夹,我们提前在工程目录下新建一个app文件夹, 里面放ipa包
ASSETS_PATH="${SRCROOT}APP"
#目录ipa包路径
TARGET_IPA_PATH="${SRCROOT}/*.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")
#---------------------------
#---------------------------
#2.将解压出来的.app 拷贝进入工程下
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"  #真是醉了这样不行
echo "temp:$TARGET_APP_PATH"
echo "app路径:$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
rm -rf "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
mkdir -p "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
cp -rf "$TEMP_APP_PATH/" "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
#---------------------------
#---------------------------
#3.删除一些无法签名的
rm -rf "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/PlugIns"
rm -rf "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Watch"
#---------------------------
#---------------------------
#4. 更新info.plist文件 的Bundle identifier
#设置:“Set :KEY Value ” “目标文件路径”
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier  $PRODUCT_BUNDLE_IDENTIFIER" "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Info.plist"
echo "Set :CFBundleIdentifier  $PRODUCT_BUNDLE_IDENTIFIER"
echo "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Info.plist"
#---------------------------
#---------------------------
#5. 给Maho文件上执行 仅限
APP_BINARY=`plutil -convert xml1 -o - $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/Info.plist | grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
echo "APP_BINARY $APP_BINARY"
chmod +x "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/$APP_BINARY"
#---------------------------
#---------------------------
#6.重签名第三方app
#TARGET_APP_FRAMEWORK_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app/frameworks”
#if [-d "$TARGET_APP_FRAMEWORK_PATH"];
#then
#for FRAMEWORK in "$TARGET_APP_FRAMEWORK_PATH/"*
#do
#/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
#done
#fi
#签名所有framework和动态库
function mycodesign(){
#遍历文件$1 为shell语法 相当于ls遍历的东西在一个数组中$1为下标为1  1开始 https://blog.csdn.net/xungjhj/article/details/73613883
for file in `ls $1`;
do
# 获取目录名字${file#*.}:拿掉第一个 .  及其左边的字符串:file.txt https://www.cnblogs.com/xunbu7/p/6187017.html
extension="${file#*.}"
#判断是否为目录 就是 普通的比较与[]相似 http://manual.51yip.com/shell/tests.html#DBLBRACKETS
if [[ -d "$1/$file" ]]; then
#判断后辍是否为framework framework因为也是一个目录
if [[ "$extension" == "framework" ]]; then
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$1/$file"
else
codesign "$1/$file"
fi
#判断是否为文件
elif [[ -f "$1/$file" ]]; then
#判断后辍
if [[ "$extension" == "dylib" ]]; then
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$1/$file"
fi
fi
done
}
mycodesign "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"

#codesign -fs "$EXPANDED_CODE_SIGN_IDENTITY" --no-strict --entitlements entitlements.plist "$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"

脚本运行入口:

效果是:

项目地址:

原文地址:https://blog.51cto.com/haidragon/2406523

时间: 2024-07-30 08:37:04

xcode通过脚本调试第三方app的相关文章

iOS逆向工程之使用LLDB的USB连接调试第三方App

LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LLDB来调试你自己的App.那么本篇博客中就要使用LLDB来调试从AppStore下载安装的App,并且结合着Hopper来分析第三方App内部的结构.LLDB与Hopper的结合,会让你看到不一样的东西,本篇博客就会和你

在非越狱设备上使用 LLDB 调试第三方 App

说明 这个方法是在 iOS 8 刚发布的时候想到的,当时主要用来在非越狱的 iOS 8 设备上调试分析第三方已经支持 iOS 8 的 App,比如:UC 浏览器,下面也会使用 UCWEB 为例来说明一些命令. 原理 谈不上原理,主要就是利用 xcode 的工具链,当然如果对证书.签名.Entitlements 比较熟悉,可能会很自然的想到这个方法.当时想到方法后,就在 github 上搜索了一下发现已经有人写了相关的工具,下面跟大家说下具体如何操作. 工具 ios-deploy:https://

LLDB调试第三方app

先要用xcode新创建一个项目连接手机调试它,这样手机上就会有debugserver程序,如图所示.会在/Developer/usr/bin下如图所示.因为他目前不能调试其它app,因为没有task_for_pid权限.先把它拷贝到电脑上.在同级目录创建一个pist文件.如图所示.entitlements.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC &quo

Xcode开发和调试总结

Xcode是iOS开发主要的工具.IDE.关于Xcode的细枝末节,可以参考苹果的官方文档或者众多的说明.此文档主要涉及常用开发和调试注意事项,参考版本为Xcode 5.1.1. 目标设置: 在此,我就不区分Project和Target了,这两方面有很多共同的设置,所以只需要了解需要设置哪些子项就可以了. Deployment Target:设置支持的最低设备版本,这个根据代码的API支持情况而定 Base SDK:理论上应该设置为最新版本的SDK,以支持最高版本 Identity:设置Bund

重要信息:::::Xcode 8 不支持第三方插件

幽灵入侵,完整的XCodeGhost 事件到底是什么样的? 2015-09-21 10:08 腾讯安全平台部 9条评论 [编者按]本文来自腾讯安全应急中心,作者Gmxp. 前言 这几天安全圈几乎被XCodeGhost事件刷屏,大家都非常关注,各安全团队都很给力,纷纷从不同角度分析了病毒行为.传播方式.影响面积甚至还人肉到了作者信息.拜读了所有网上公开或者半公开的分析报告后,我们认为,这还不是全部,所以我们来补充下完整的XCodeGhost事件. 由于行文仓促,难免有诸多错漏之处,还望同行批评指正

2017最新xcode打包IPA上传App Store完整教程

2017年吐血整理最新xcode打包IPA上传App Store完整教程 分为8 步进行 1.申请iOS证书 2.导入证书到钥匙串 3.xcode配置iOS证书 4.配置xcode打包环境 5.打包并导出IPA包 6.在iTunes Connect创建App 7.上传IPA到iTunes Connect 8.上传IPA成功后到iTunes Connect提交审核 一.申请iOS发布证书和描述文件 1.首先申请一个App IDs(应用身份证).已申请略过. APP IDs在后面很多地方用到 首先打

酷开 5.5 版本安装第三方app

有参考价值的话,记得给评论和赞哟 客服的官方说法是,广电总局不让,所以他们没办法.!!气人!! 网络上检索了几个方法,可惜面对的是 5.5 版本,不行! 1)应用圈里找 小白文件管理器, 或者ES文件管理器. --- 已经找不到了. 2)把老版本的更新文件拷贝到USB,倒回老版本. --- 5.5版本连zip文件都忽略了,无解. 最后,从网上知道了工厂模式(上上下下左右左右)之后,把adb 调试给打开了. 之后就很简单了. adb connect 192.168.1.5 #确认一下是否连上 ad

Xcode 真机调试报错:This application&#39;s application-identifier entitleme

    This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed 解决方法:1.Xcode-Window->Devices2.选中你的设备,在右边的installed Apps中删除这个App3.重新编绎即可 Xcode 真机调试报错:This

[转]Xcode概览:调试应用程序

原文网址: blog.csdn.net/fhbystudy/article/details/12856261 本文由CocoaChina翻译组成员Creolophus(github主页)翻译自苹果官方文档Xcode Overview:Debug Your App,校对唧唧歪歪,敬请勘误. 当您点击了工作区工具条中的运行按钮并且你的应用编译成功,那么Xcode运行您的应用程序并开启调试功能.您可以使用图形化的工具直接在源码编辑器中调试应用,比如使用Data tips.快速查看(Quick look