美文网首页
iOS逆向-11:应用重签名

iOS逆向-11:应用重签名

作者: 恍然如梦_b700 | 来源:发表于2021-05-05 00:04 被阅读0次

重签名原理

对原始数据进行一次HASH,然后用自己的p12进行一次签名
想获得app的原始数据就需要用越狱手机对app进行砸壳

codesign

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

  • $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 输出文件 输入文件 将输入文件压缩为输出文件

重签名步骤

  1. 删除插件和带有插件的.app包(比如Watch)

  2. 对Frameworks里面的库进行重签名

  3. 给可执行文件 +x(可执行)权限

  4. 添加描述文件(新建工程,真机编译得到,而且要运行,将描述文件安装到手机)

  5. 替换BundleID(info.plist 文件。 BundleID要和描述文件中的ID保持一致)

  6. 通过授权文件(Entilements)重签.app包、

  • 查看描述文件$security cms -D -i embedded.mobileprovision
  • 将描述文件中Entilements 拷贝出来,生成plist文件。(文件名称entitlements.plist )
  • 用权限文件签名APP包 $ codesign -fs "Apple Development: XX(XX)" --no-strict --entitlements=entitlements.plist WeChat.app
  1. 最后通过Xcode安装

SHELL脚本

shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中文件以及运行在系统上的进程的途径。Shell一般是指命令行工具。它允许你输入文本命令,然后解释命令,并在内核中执行。
Shell脚本,也就是用各类命令预先放入到一个文本文件中,方便一次性执行的一个脚本文件。
相关命令

  • $source FileName

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

  • $./FileName
    含义:读取并执行文件中的命令。但有一个前提,脚本文件需要有可执行权限。

终端命令重签名

查看签名信息


image.png

查看自己的证书


image.png

重签framework,查看权限x代表可执行权限


image.png

新建项目 编译,拷贝描述文件到目标App里,然后将权限entitlements的内容copy到一个plist文件中,找到位置修改名字为entitlements.plist,放在目标app同级目录下通过plist文件进行重签

替换签名信息


image.png

上面的步骤比较繁琐且过程中忘了一个步骤就会出现问题

利用xcode 重签名

首先创建一个同名工程,运行 找到app位置,然后将要替换的app中的watch和plugins(免费证书时)删掉,重签frameworks,修改info.plist的bundle id ,然后替换原有app,重新运行。

脚本重签

上面只是为了更好的了解重签名原理,开发中真正重签名可以通过脚本来重签。
注意: 可能不同设备拉的包可能运行不了,所以解压之后将info.plist中的UISupportedDevices直接删掉,然后重新压缩zip -ry xxx.ipa Payload,再执行脚本。
脚本的话需要了解一些python语言,这里就不多赘述了,大家照着官网或者一些博客了解就行了。

image.png

运行状态

image.png

用户、组、权限

Unix和Linux都是多用户、多任务的系统,所以这样的系统里面就拥有了用户、组的概念。那么同样文件的权限也就有相应的所属用户和所属组了
通过ls -l 查看


image.png image.png

文件类型
常见:
[d] 目录(directory)
[-] 文件

文件权限
[r]:read,读 [w]:write,写 [x]:execute,执行 。
注意:这三个权限的位置不会变,依次是rwx 。出现减号[-]在对应位置,代表没有此权限。
一个文件的完整权限,总共分为三组:

  • 第一组:文件所有者的权限
  • 第二组:这一组其他用户的权限
  • 第三组:非本组用户的权限

改变权限 chmod

件权限的改变使用chmod命令。设置方法有两种:数字类型改变 和 符号类型改变。
由于文件权限分为三种身份:[user][group][other] 三个权限:[read] [write] [execute]

数字类型:
各个权限数字对照:r:4 w:2 x:1
如果一个文件权限为 [–rwxr-xr-x ]
User : 4+2+1 = 7
Group: 4+0+1 = 5
Other: 4+0+1 = 5
命令:chmod 755 文件名

符号类型:

chmod   [u、g、o、a]    [+(加入)、-(除去)、=(设置)]    [r、w、x]         文件名称

补充

mkdir 文件夹 创建文件夹
zip -ry xxx.ipa Payload 压缩

相关文章

网友评论

      本文标题:iOS逆向-11:应用重签名

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