iOS应用重签名

时间:2021-7-20 作者:qvyue

签名与重签名

签名:原始数据 –> HASH –> 原来的证书加密
重签名:原始数据 –>HASH –> 现在的证书加密

注意:重签名后WeChat不能登录自己微信账号,不然会被封号

准备工作

越狱微信IPA包 密码:ws80
Myzip
iTerm2/终端
IPhone手机

我们将下载的砸过壳的微信IPA包通过Myzip解压

iOS应用重签名
解压IPA

CodeSigna手动签名

终端命令
  • codesign -vv -d 查看原始签名
  • security find-identity -v -p codesigning 列出钥匙串里可签名的证书
  • Codesign -fs “证书串” 文件名 强制替换签名
  • Chmod +x 可执行文件 给文件添加权限
  • security cms -D -i ../embedded.mobileprovision 查看描述文件
  • codesign -fs “证书串”–no-strict –entitlements=权限文件.plist APP包
  • Zip -ry 输出文件 输人文件 将输人文件压缩为输出文件
查看原始签名
codesign -vv -d Wechat.app
iOS应用重签名
查看原始签名
列出钥匙串里可签名的证书
security find-identity -v -p codesigning
iOS应用重签名
钥匙串里可签名的证书
查看可执行文件

otool -l查看Mach-O详细信息

cd WeChat.app
otool -l WeChat
iOS应用重签名
image.png
开始重签名

需要重签名的文件

  • WeChat可执行文件
  • Frameworks文件夹里面的.framework文件

不能签名的文件

  • PlugIns里面的文件(是不能用免费证书签名的),所有不用管它,可以直接删除,不会印象可执行文件的执行
  • Watch文件里的也是不能重签名的,直接删除,也不会有啥影响

.framework重签名

我们使用哪个账号重签名,就要用对应的证书去创建描述文件
需要使用下面的方法依次遍历执行Framework文件夹中的.framework

codesign -fs "Apple Development: 1106903517@qq.com (XU65U3794Q)" andromeda.framework
iOS应用重签名
.framework重签名

可执行文件重签名

创建描述文件
iOS应用重签名
新建Xcode项目
iOS应用重签名
信任证书

连接手机编译后,就会出现.app

iOS应用重签名
image.png

显示.app包内容,里面就有描述文件

iOS应用重签名
描述文件

然后我们运行成功后,描述文件就会安装到我们的手机上

替换BuildID

复制我们刚刚新建项目中的BuildID(aaa.WeChat1),然后打开WeChat包内容,找到打开Info.plist,替换里面的BuildID

iOS应用重签名
替换BuildID
添加.plist
iOS应用重签名
查看embedded.mobileprovision

复制embedded.mobileprovision文件中的

    application-identifierBRLQDNZ4ST.aaa.WeChat1keychain-access-groupsBRLQDNZ4ST.*get-task-allowcom.apple.developer.team-identifierBRLQDNZ4ST
![复制](https://upload-images.jianshu.io/upload_images/16490557-2cd86410d919838c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

使用Xcode新建一个Entitlements.plist文件,将刚复制的内容粘贴进去
然后再将Entitlements.plist文件复制到下面目录下

iOS应用重签名
Entitlements.plist
Mach-O和App签名

替换权限文件

codesign -fs "Apple Development: 1106903517@qq.com (XU65U3794Q)" --no-strict --entitlements=entitlements.plist WeChat.app
iOS应用重签名
替换权限文件
安装重签名后WeChat

打开Xcode的Devices,点击+选择重签名后的WeChat

iOS应用重签名
image.png

点击Open

iOS应用重签名
image.png

点击Replace安装

iOS应用重签名
image.png

iOS应用重签名
image.png
运行调试WeChat

我们在手机上打开重签名后WeChat,在Xcode上选择Debug -- Attach to Process --- WeChat

iOS应用重签名
运行

等待一会后,就可以进行调试界面

iOS应用重签名
调试

shell脚本进行重签名

相关命令

  • source FileName

    • 当前shell环境中读取并执行FileName中的命令
    • 命令可以强行让一个脚本去立即影响当前的环境(一般用于加载配置文件)。命令会强制执行脚本中的全部命令,而忽略文件的权限
  • bash FileName、 $zsh FileName

    • 重新建立一个子shell,在子shell中执行脚本里面的句子。
  • ./FileName

    • 读取并执行文件中的命令。但有一个前提,脚本文件需要有可执行权限。

Mac的文件属性

iOS应用重签名
文件属性
文件类型和权限
iOS应用重签名
文件类型和权限

XCode脚本重签名

新建一个XCode项目,在改项目目录下新建一个.sh文件和APP文件,
将未解压的砸壳WeChat放到APP文件夹中,.sh文件的脚本在文章末尾

iOS应用重签名
image.png

连接手机,运行项目成功后,清空缓存
在新工程中将.sh文件放到Run Script下,记得给.sh文件运行权限
注意:如果是自己的IPA包,要删除info.plist文件中UISupportedDevices字段

iOS应用重签名
image.png

重新运行就可以了,我们会发现重签名的WeChat就安装上了

脚本

# ${SRCROOT} 它是工程文件所在的目录
TEMP_PATH="${SRCROOT}/Temp"
#资源文件夹,我们提前在工程目录下新建一个APP文件夹,里面放ipa包
ASSETS_PATH="${SRCROOT}/APP"
#目标ipa包路径
TARGET_IPA_PATH="${ASSETS_PATH}/*.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")
# 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"
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
#  设置:"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
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。