应用签名-脚本签名

news/2024/7/20 22:59:57 标签: iOS, 逆向, 签名, 脚本

签名原理熟悉了,又能够手动对应用签名,那么就可以将手动签名部分写成脚本,通过脚本,一步步实现手动签名过程。脚本签名xcode会对.ipa做权限管理,因此不需要做权限签名

破壳ipa获取:
1、通过越狱手机获取破壳应用;
2、通过PP助手获取越狱应用。

新建xcode工程,在工程文件中新建两个文件夹toolapp
1、tool文件存放签名脚本
2、app文件存放要启动的.ipa破壳应用。

签名脚本
在这里插入图片描述
脚本

#定义目录路径 ${SRCROOT}为当前工程的根目录
#定义临时目录变量,存放解.ipa后产生的临时文件
TEMP_PATH="${SRCROOT}/temp"
#tool路径
TOOL_PATH="${SRCROOT}/tool"
#定义APP资源目录变量,存放要重签名APP
APP_PATH="${SRCROOT}/app"
#定义ipa包路径
IPA_PATH="${APP_PATH}/*.ipa"


#移除临时文件,并重新创建文件夹
rm -rf "${TEMP_PATH}"
mkdir -p "${TEMP_PATH}"


###########1、解压ipa到指定的文件下###########
unzip -o "$IPA_PATH" -d "$TEMP_PATH"
#获取临时app路径
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
echo ".app文件路径:$TEMP_APP_PATH"


###########2、修改应用info.plist的BundleId###########
# 设置 "Set :KEY Value" "Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TEMP_APP_PATH/Info.plist"


###########3、删除扩展应用及插件###########
echo "Removing PlugIns and Watch"
rm -rf "$TEMP_APP_PATH/PlugIns"
rm -rf "$TEMP_APP_PATH/Watch"


###########4、给可执行文件执行权限###########
#获取可执行文件路径
APP_BINARY=`plutil -convert xml1 -o - $TEMP_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#给可执行文件权限
chmod +x "$TEMP_APP_PATH/$APP_BINARY"


###########5、重新签名Frameworks下的所有动态库###########
#获取动态库路径
APP_FRAMEWORKS_PATH="$TEMP_APP_PATH/Frameworks"
#判断文件是否存在
if [ -d "$APP_FRAMEWORKS_PATH" ]
then
#遍历所有动态库
for FRAMEWORK in "$APP_FRAMEWORKS_PATH/"*
do
echo "framework: $FRAMEWORK"
#对动态库签名 $EXPANDED_CODE_SIGN_IDENTITY xcode上的证书
/usr/bin/codesign -fs "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi

###########6、将修改后的.app移动到xcode对应的Products下###########
#BUILT_PRODUCTS_DIR xcode生成的.app包路径
#TARGET_NAME 应用名称
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
echo "目标代码路径:$TARGET_APP_PATH"
rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH/"
  • 需要将脚本路径添加到创建的Run Script
  • 注意:在工程中可能需要对SignApp.sh加可执行权限chmod +x SignApp.sh
    shell.png

需要安装的应用:
在这里插入图片描述
以上步骤完成后几个运行工程,编译完后会自动执行脚本,在脚本中完成对应用的重签名

运行安装:
在这里插入图片描述
Xcode调试:
在这里插入图片描述
通过这种方法,是不是就更方便了,直接对应用重签名, 通过xcode了解应用布局,层级关系。再也不用担心他们又背着我们做了哪些“见不得人的事”了。

《应用签名-手动签名


http://www.niftyadmin.cn/n/1737836.html

相关文章

epoll原理及使用方法

Linux 2.6内核中提高网络I/O性能的新方法epoll 正如我昨天在“Linux下各类TCP网络服务器的实现源代码”(http://zhoulifa.bokee.com/5345930.html)一文中提到的那样&#xff0c;I/O多路复用技术在比较多的TCP网络服务器中有使用&#xff0c;即比较多的用到select函数。感谢chin…

Web应用安全学习

1、CSRF漏洞的防范 方法一&#xff1a;添加Form Token 基本思路&#xff1a; step 1、在服务器端生成一个随机的token&#xff0c;如用tokenmd5(time()userName)&#xff1b; step 2、把token存入session或者数据库&#xff1b; step 3、把token存入待输出页面的某个元素中&…

objc4-750源码编译

OC的一个主要特性Runtime运行时特性&#xff0c;在日常开发中我们使用到的都是不可见的&#xff0c;还好官方提供了Runtime&#xff08;objc4&#xff09;源码供开发者研究&#xff0c;我是小白&#xff0c;下面就开始迈出源码探索的第一步&#xff0c;源码编译。 源码地址 一…

解读 nginx 中 chain 和 buf

在写 nginx 的 filter 模块时候需要比较深入去了解chain 和 buf的一些细节以及数据流处理过程。 就结构而言&#xff0c;这两个结构不算复杂 struct ngx_chain_s { ngx_buf_t *buf; ngx_chain_t *next;}; struct ngx_buf_s { u_char *pos; u_char …

GCD部分总结

一、概述 多线程任务管理&#xff0c;基于C语言的底层API&#xff0c;采用闭包形式与外界通讯&#xff0c;代码简洁高效&#xff1b;充分利用多核CPU&#xff0c;自动管理线程的生命周期&#xff0c;我们只负责任务的创建。 二、队列和任务 1、队列 常用的数据结构之一&…

理解JAVASCRIPT 中hasOwnProperty()的作用

【转载】http://hj149.javaeye.com/blog/505237 hasOwnProperty&#xff1a;是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是&#xff0c;此方法无法检查该对象的原型链中是否具有该属性&#xff0c;该属性必须是对象本身的一个成员。格式如下&#xff1a; …

iOS图片处理

一、图片大小 二、强制解压缩 三、灰度图片 四、图片调色 五、设置马赛克 一、图片大小 位图&#xff1a;由一个个像素点组成的图像 图片像素点个数&#xff1a;就是图片宽高乘积 一个像素点的大小&#xff1a;4个字节&#xff08;存放RGBA值&#xff0c;每一分量占1个字节&…

站点SEO优化

一&#xff0e; 选好关键字。关键字是搜索引擎找到我们的网站的关键。所以我们一定要先给自己的网站设定好一个或几个关键字。关键字不易太多&#xff0c;以5-10个为宜。选择关键字前可以先查询一下和你网站相关的关键字热度排行&#xff0c;选取热度比较高的关键字。 二&#…