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包。

iOS越狱包 重签名
下载越狱包


iOS越狱包 重签名
查找ipa文件


2.查看越狱包的签名信息

codesign -vv -d  包的路径


iOS越狱包 重签名
查询的文件



iOS越狱包 重签名
查询App包是否有签名信息

3.查询本地所有授权证书

通过终端命定:security find-identity -v -p codesigning

iOS越狱包 重签名
查看本地的证书
iOS越狱包 重签名
一般用xcode里面默认的Signing Certificate证书对App进行签名就Ok


4.查看App可执行文件是否加密


iOS越狱包 重签名
在包里面找到和包同名的可执行文件


iOS越狱包 重签名
可执行文件


iOS越狱包 重签名
正版的加密的


二.手动进行签名

1.删除插件Plugins文件夹以及里面的内容


iOS越狱包 重签名
显示包内容


iOS越狱包 重签名
干掉这个文件


2.对 Frameworks 进行签名!

iOS越狱包 重签名
内容为空,无重签内容

如果有xxx.framework,利用终端对其进行重签名 进入到对应的Frameworks文件目录下:

执行:codesign -fs " 上面查询到的本地的授权证书" xxx.framework


3.给可执行文件执行权限! 

chmod +x   可执行文件


iOS越狱包 重签名
与包同名可执行文件(一般都很大 几十兆)


终端执行:

chmod +x  MojiWeather的文件地址

执行后可以看到可执行文件的描述信息变为 Unix 可执行文件


iOS越狱包 重签名
给权限后的可执行的文件


4.拷贝描述文件

随便建个项目A,运行一下,生成app包,之后获取它的描述文件:


iOS越狱包 重签名
在Finder查看 之后显示包内容


iOS越狱包 重签名
描述文件


将描述文件copy 到MojiWeather包里


iOS越狱包 重签名
Copy成功


5.修改info.plist 的Bundle ID!

在新建的项目A中,就在刚刚的描述文件的同级目录,找到info.plist 文件, 之后复制bundle Id到MojiWeather包里的info.plist中


iOS越狱包 重签名
plist文件
iOS越狱包 重签名
bundle id


6.生成plist的权限文件

查看当前用的描述文件的权限: security cms -D -i  embedded.mobileprovision


iOS越狱包 重签名
<dict> 标签内的复制粘贴

在新建的项目A中创建plist(newPlist.plist)文件,之后Source Code 展示,将复制的代码放到粘贴到里面,如图:


iOS越狱包 重签名
新建的plist文件

将新建的plist 文件 放到和MojiWeather包的同级目录。


iOS越狱包 重签名
将新建的plist 文件 放到和MojiWeather包的同级目录。


7.签名整个APP!

$codesign -fs "iPhone Developer: xxx  (5ZBE4C879L)"  --no-strict --entitlements=newPlist.plist MojiWeather.app


iOS越狱包 重签名
终端命令签名整个App


8.打包 生成zip

将MojiWeather.app 压缩成zip的文件,之后将.zip改成ipa,获取ipa的安装文件。


9.安装重签名的App 


iOS越狱包 重签名
安装


接下来就是见证奇迹的时刻了。。。。。。




我擦嘞,报错了,又失败了。。。。。。  我为什么加又呢?     


iOS越狱包 重签名
唉!


彩蛋: 同志们不要灰心,我用MonkeyDev 签名成功了,说明上面的步骤哪里出问题了,持续完善中。

MonkeyDev:https://github.com/AloneMonkey/MonkeyDev


三.利用Xcode进行签名

刚才手动硬整未成功,这回咱们试试借助Xcode签名试一下。


1.替换app包

新建Xcode 工程XcodeSign,运行一下, 在finder中打开XcodeSign.app文件。


iOS越狱包 重签名
用墨迹天气的包替换这个文件


用墨迹天气(MojiWeather)的包替换上图新建的项目的包,替换后注意名字要改成XcodeSign,和项目生成的包名相同,达到欺骗Xcode的目的。

二.更改plist 文件


iOS越狱包 重签名
复制bundle id 


iOS越狱包 重签名
显示MojiWeather包内容,将bundle id 改成XcodeSign项目的bundle id


三.修改可执行文件权限

chmod +x   可执行文件 同手动签名第三步。


之后运行项目:


iOS越狱包 重签名
期待中 小激动


mmp:

iOS越狱包 重签名
又失败了



四.脚本自动化重签

上面的两个都失败了,这个应该不会让大家失望了。

1.新建项目添加脚本信息


iOS越狱包 重签名
添加脚本段



iOS越狱包 重签名
清空一下


2.配置脚本信息

在项目的同级目录建立个文件夹


iOS越狱包 重签名
新建的App文件夹,里面要存放重签名的ipa 包


脚本仅供参考:因为我又失败了。算了直接用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

上一篇:保护你的Web服务器 iptables防火墙脚本全解读


下一篇:ESC使用体验