iOS越狱包 重签名
重签名目的:越狱包重签名运行到非越狱手机进行调试。
手动重签名大体步骤(以墨迹天气app 为例子):
1.删除插件Plugins文件夹以及里面的内容。
2.Watch 直接干掉!()(微信有这一步,其他App无)
3.对 Frameworks 进行签名!
4.给可执行文件执行权限! chmod +x WeChat
5.拷贝描述文件
6.修改info.plist 的Bundle ID!
7.生成plist的权限文件
8.签名整个APP!
$codesign -fs "iPhone Developer: xxx (5ZBE4C879L)" --no-strict --entitlements=en.plist WeChat.app
9.打包 生成zip
$zip -ry WeChat.ipa Payload
一.前期准备:
1.利用PP助手下载越狱的墨迹天气的App包。
2.查看越狱包的签名信息
codesign -vv -d 包的路径
3.查询本地所有授权证书
通过终端命定:security find-identity -v -p codesigning
4.查看App可执行文件是否加密
二.手动进行签名
1.删除插件Plugins文件夹以及里面的内容
2.对 Frameworks 进行签名!
如果有xxx.framework,利用终端对其进行重签名 进入到对应的Frameworks文件目录下:
执行:codesign -fs " 上面查询到的本地的授权证书" xxx.framework
3.给可执行文件执行权限!
chmod +x 可执行文件
终端执行:
chmod +x MojiWeather的文件地址
执行后可以看到可执行文件的描述信息变为 Unix 可执行文件
4.拷贝描述文件
随便建个项目A,运行一下,生成app包,之后获取它的描述文件:
将描述文件copy 到MojiWeather包里
5.修改info.plist 的Bundle ID!
在新建的项目A中,就在刚刚的描述文件的同级目录,找到info.plist 文件, 之后复制bundle Id到MojiWeather包里的info.plist中
6.生成plist的权限文件
查看当前用的描述文件的权限: security cms -D -i embedded.mobileprovision
在新建的项目A中创建plist(newPlist.plist)文件,之后Source Code 展示,将复制的代码放到粘贴到里面,如图:
将新建的plist 文件 放到和MojiWeather包的同级目录。
7.签名整个APP!
$codesign -fs "iPhone Developer: xxx (5ZBE4C879L)" --no-strict --entitlements=newPlist.plist MojiWeather.app
8.打包 生成zip
将MojiWeather.app 压缩成zip的文件,之后将.zip改成ipa,获取ipa的安装文件。
9.安装重签名的App
接下来就是见证奇迹的时刻了。。。。。。
我擦嘞,报错了,又失败了。。。。。。 我为什么加又呢?
彩蛋: 同志们不要灰心,我用MonkeyDev 签名成功了,说明上面的步骤哪里出问题了,持续完善中。
MonkeyDev:https://github.com/AloneMonkey/MonkeyDev
三.利用Xcode进行签名
刚才手动硬整未成功,这回咱们试试借助Xcode签名试一下。
1.替换app包
新建Xcode 工程XcodeSign,运行一下, 在finder中打开XcodeSign.app文件。
用墨迹天气(MojiWeather)的包替换上图新建的项目的包,替换后注意名字要改成XcodeSign,和项目生成的包名相同,达到欺骗Xcode的目的。
二.更改plist 文件
三.修改可执行文件权限
chmod +x 可执行文件 同手动签名第三步。
之后运行项目:
mmp:
四.脚本自动化重签
上面的两个都失败了,这个应该不会让大家失望了。
1.新建项目添加脚本信息
2.配置脚本信息
在项目的同级目录建立个文件夹
脚本仅供参考:因为我又失败了。算了直接用MonkeyDev吧!
# ${SRCROOT} 它是工程文件所在的目录
# 定义路径变量 TEMP_PATH
TEMP_PATH="${SRCROOT}/Temp"
#资源文件夹
ASSETS_PATH="${SRCROOT}/APP"
#ipa包路径
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"
#新建Temp文件夹 rm 移除
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打印路径
# 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"
#拷贝app文件到TARGET_APP_PATH
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"
#----------------------------------------
#3. 删除extension和WatchAPP. 个人证书没法签名Extention (微信独有的)
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"
#----------------------------------------
# 4. 更新info.plist文件 CFBundleIdentifier(bundle id)
# 设置:"Set : KEY Value" "目标文件路径"
#/usr/libexec/PlistBuddy 一段可执行文件 -c 执行 (Command)
/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
#签名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
三分钟帮你集成极光推送——和那些你可能不知道的事
本文简介:本文前篇,可以帮助朋友们快速集成极光推送。本文后篇,是我自己项目实践的一些总结和心得,应该对读者们还是很有参考价值的,相信读完这篇文章,你会对极光推送有更加深入的理解,而不仅仅只是会集成而已。总之呢,集成第三方SDK,都不是很难的事情,仔细阅读文档,一步步来,遇到Bug,慢慢解决就行,实在解决不了,可以问问客服小哥哥或者小姐姐,重要的是,你得有着解决它的决心和耐心。 《一》JPush SDK的集成 简要介绍: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。 开发者集成 JPush Android SDK 到其应用里,JPush Android SDK 创建到 JPush Cloud 的长连接,为 App 提供永远在线的能力。 当开发者想要及时地推送消息到达 App 时,只需要调用 JPush API 推送,或者使用其他方便的智能推送工具,即可轻松与用户交流。 JPush Android SDK 是作为 Android Service 长期运行在后台的,从而创建...
- 下一篇
Android studio adb已停止运行
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/80262451 Android studio 弹窗adb已停止运行,在adb窗口打开如下图: 看到5037端口并未被占用,然后kill-server,显示未运行,在start-server, 显示C:\Users\Administrator\AppData\Local\Temp\adb.log权限拒绝,找到问题 解决:进入C:\Users\Administrator\AppData\Local\Temp,找到adb.log文件,使用QQ管家解锁文件就OK了
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境