应用重签名

一、codesign

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

终端命令

$security find-identity -v -p codesigning 列出钥匙串里可签名的证书
$codesign –fs "证书串(iPhone Developer: weibing yao (2J6EA7WS74))" 文件名 强制替换签名
$chmod +x 文件名 给文件添加执行权限
$security cms -D -i ../embedded.mobileprovision 查看描述文件
$codesign -fs “证书串” --no-strict --entitlements=权限文件.plist APP包
$Zip –ry 输出文件 输入文件 将输入文件压缩为输出文件
$codesign -vv -d WeChat.app 查看WeChat.app的信息
$otool -l WeChat 读取可执行文件WeChat,MachO
$otool -l WeChat > ~/Desktop/123.txt 读取可执行文件WeChat,重定向,到桌面的123.txt
$otool -l WeChat | grep cry 读取可执行文件WeChat,管道输出,筛选cryptid

运行的时候解密,所以一定要是高效的,解密到内存。如果安装的时候解密的话,直接从安装之后的磁盘复制出来不就好了。所以一定是运行是解密。每次运行都解密。

二、重签名步骤

1、删除插件和带有插件的.app包(比如Watch)
2、对Frameworks里面的库进行重签名
3、给可执行文件 +x(可执行)权限
4、添加描述文件(新建工程,真机编译得到)
5、替换BundleID
6、通过授权文件(Entilements)重签.app包

三、SHELL脚本

3.1、shell基础知识

bash是一种shell,zsh也是一种shell
1、根目录下,执行cd /bin
2、open .

应用重签名_第1张图片

3、chsh -s /bin/bash 切换成bash

应用重签名_第2张图片

4、chsh -s /bin/zsh 切换成zsh

应用重签名_第3张图片
  • .bash_profile bash的初始化文件 在(~)目录下
  • .zshrc zsh的初始化文件 在(~)目录下
  • ls 查看文件
  • ls -a 查看所有文件(包含隐藏文件)
  • ls -l 查看所有文件(不包含隐藏文件)(文件详情)
  • pwd 输出当前文件夹或文件的路径
  • ~/的区别,看下面代码
dengyazhou-MacBook-Pro:~ dengyazhouPro$ pwd
/Users/dengyazhouPro
dengyazhou-MacBook-Pro:~ dengyazhouPro$ cd /
dengyazhou-MacBook-Pro:/ dengyazhouPro$ pwd
/
dengyazhou-MacBook-Pro:/ dengyazhouPro$ 
  • mkdir 文件夹名 建文件夹
  • touch 123.txt 建文件
  • cd .. 返回文件上一级
  • cat 文件名 查看文件
  • rm -rf 文件夹名rm -r 文件夹名 删除文件夹,包含里面的内容
  • rm 文件名 删除文件
  • unzip 文件名 解压文件
  • 终端操作文本
    • 1、vim 123.txt 或者 vi 123.txt
    • 2、i
    • 3、esc
    • 4、:
    • 5、wq和x的操作一样
  • 创建一个shell脚本
应用重签名_第4张图片
应用重签名_第5张图片
应用重签名_第6张图片

bash 123.sh 执行shell
zsh 123.sh 执行shell
source 123.sh 执行shell
./123.sh 执行shell

  • cat /private/etc/shells 查看shell,在(/)目录下
应用重签名_第7张图片
  • otool -f MachO文件:查看MachO胖二进制文件头信息
应用重签名_第8张图片
3.2、shell

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

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

$bash FileName、$zsh FileName
意思:重新建立一个子shell,在子shell中执行脚本里面的句子。

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

四、用户、组、权限

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

  • 目录结构
应用重签名_第9张图片
  • Mac文件属性
应用重签名_第10张图片
  • 文件类型与权限(permission)
应用重签名_第11张图片
  • 改变权限:chmod
    • chmod +x 文件名 默认给a加 ,等同于chmod a+x 文件名
    • chmod 561 文件名,分别给u设置为r-w、g设置为rw-、o设置为--x。注意数字类型改变的时候,里面没有u、g、o、a、+、-、=、r、w、x这些。
应用重签名_第12张图片

你可能感兴趣的:(应用重签名)