美文网首页
iOS应用重签名

iOS应用重签名

作者: 木扬音 | 来源:发表于2021-04-18 15:21 被阅读0次

签名与重签名

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

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

准备工作

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

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

解压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
查看原始签名
列出钥匙串里可签名的证书
security find-identity -v -p codesigning
钥匙串里可签名的证书
查看可执行文件

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

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

需要重签名的文件

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

不能签名的文件

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

.framework重签名

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

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

可执行文件重签名

创建描述文件
新建Xcode项目 信任证书

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


image.png

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


描述文件

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

替换BuildID

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

替换BuildID
添加.plist
查看embedded.mobileprovision

复制embedded.mobileprovision文件中的

    <dict>

                <key>application-identifier</key>
        <string>BRLQDNZ4ST.aaa.WeChat1</string>

                <key>keychain-access-groups</key>
        <array>
                <string>BRLQDNZ4ST.*</string>
        </array>

                <key>get-task-allow</key>
        <true/>

                <key>com.apple.developer.team-identifier</key>
        <string>BRLQDNZ4ST</string>

    </dict>
![复制](https://img.haomeiwen.com/i16490557/2cd86410d919838c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

Entitlements.plist
Mach-O和App签名

替换权限文件

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

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

image.png
点击Open
image.png
点击Replace安装
image.png
image.png
运行调试WeChat

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

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

shell脚本进行重签名

相关命令

  • source FileName

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

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

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

Mac的文件属性

文件属性
文件类型和权限
文件类型和权限

XCode脚本重签名

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

image.png
连接手机,运行项目成功后,清空缓存
在新工程中将.sh文件放到Run Script下,记得给.sh文件运行权限
注意:如果是自己的IPA包,要删除info.plist文件中UISupportedDevices字段 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\<`
#上可执行权限
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

相关文章

  • iOS开发逆向之应用重签名(上)

    本文主要介绍重签名的几种方式,以及如何对应用进行重签名, 应用重签名 从之前《iOS逆向应用签名》中可知,签名是指...

  • 通过Shell脚本对应用重签名

    通过上两篇文章(iOS 应用重签名|使用Xcode简化应用重签名)对操作应用的重签名有了一定的认识,但是好像每次都...

  • iOS应用重签名

    网上关于签名的脚本有很多,我找了个本人觉得比较好用的脚步iOS_resign_scripts,下载脚步里面有三个脚...

  • iOS应用重签名

    代码重签名 签名机制 iOS签名需要用到codesign这个命令,了解这个命令的用法可以增加我们对签名机制的了解 ...

  • iOS 应用重签名

    本文我们将重签名一个App,实现将他人的App安装到自己手机上,然后进行部分的调试工作。 需要准备的资料: 1、安...

  • iOS应用重签名

    一、越狱版应用重签名(正版的需要砸壳,这个以后介绍) 应用重签名需要以下几个步骤: 删除插件和带有插件的.app包...

  • iOS应用重签名

    说到iOS重签,那么就应该了解iOS正常签名流程是什么,然后才能知道,我们重签名从哪几个地方入手。 iOS签名 代...

  • iOS应用重签名

    codesign Xocde提供了签名工具,codesign,我们通过几个命令就可以完成重签名 •$securit...

  • iOS 应用 重签名

    前言 在逆向过程中,当我们对IPA包发生改动时,就需要对IPA包进行重新签名,才可以重新安装到我们的iOS设备中。...

  • iOS应用重签名

    知识点准备 MacOS用户组 文件权限Unix Linux 属于多用户、多任务 我们关注第一列(权限):eg:dr...

网友评论

      本文标题:iOS应用重签名

      本文链接:https://www.haomeiwen.com/subject/lbbmlltx.html