美文网首页
ios应用签名原理以及重签名

ios应用签名原理以及重签名

作者: 正_文 | 来源:发表于2020-08-19 10:09 被阅读0次

一、iOS应用签名原理及过程

iOS应用签名原理.png

签名的过程如上图,接下来我们来简单看下描述文件,打开目录:

/Users/xxx/Library/MobileDevice/Provisioning Profiles

随便选择一个证书,用命令查看:

security cms -Di fe1db9ae-746b-49f1-8ff5-0fa8b3ab8483.mobileprovision

找到 entitlements

<key>Entitlements</key>
    <dict>
        <key>keychain-access-groups</key>
        <array>
            <string>55TKKGAAJQ.*</string>
        </array>
        <key>get-task-allow</key>
        <true/>
        <key>application-identifier</key>
        <string>55TKKGAAJQ.*</string>
        <key>com.apple.developer.team-identifier</key>
        <string>55TKKGAAJQ</string>

    </dict>

这个 entitlements 就是权限配置,App重签名会用到。

二、应用重签名

2.1 准备工作

先下载砸壳的应用(业内普遍用WeChat),用 codesign 看下我们准备的应用包:

codesign -vv -d WeChat.app

其中有一项:Authority 就是应用签名,

查看machO文件

machO即Unix可执行文件,我们用otool工具先看一下:

//以下命令可以都可以,我们用第三个
otool -l WeChat                                //终端直接输出
otool -l WeChat | grep cry                //管道输出,grep筛选
otool -l WeChat | grep cry > 文件地址       //输入到文件

cryptid字段: 0 , 代表你下载的是砸过壳的 ;1,也就是加密过的,其实就是 AppStore 使用的非对称性加密 (代码签名)。
注意:App的解密,即签名验证发生在启动App时,并非安装时就解密(可参考企业包的安装验证过程)。

cryptid.png
查看电脑上的证书

命令:security find-identity -v -p codesigning

2.2 删除插件

插件普通账号无法重签,先删除:
1、WeChat 显示包内容,找到 PlugIns 文件夹,直接删除。
2、找到Watch文件夹,这里也有插件,我们暂时不用,删除。

2.3 重签FrameWork

进入FrameWork文件夹
利用codesign,使用自己的证书进行重签名。
命令:codesign -fs "刚刚复制的你自己的证书名字" 要重签的FrameWork名称
例如:codesign -fs "Apple Development: chen_xxxx@xxxx.com (632F4MG322)" OpenSSL.framework
重复操作,把FrameWork文件夹下的所有库全部重签。

codesign.png

2.4 确保machO的执行权限。

简单判断可执行权限:预览框中,黑色,表示可执行;灰色,表示不可执行(10.15的系统可能看不了)。
也可以通过命令:ls -l Wechat,查看文件权限。结果可能为:-rw-rw-r--@ 或者其他权限。
如果没有可执行权限,也就是 x 权限,可以通过 chmod +x WeChat 添加权限。

2.4.1 Linux 文件权限

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

Mac文件属性.png 文件类型及权限.png

文件类型以及权限:

  1. 1段表示文件类型:d目录-文件
  2. 后面三段表示文件权限,对应 [user] [group] [other]
    2.1 第2段:文件所有者权限
    2.2 第3段:这一组其他用户权限
    2.3 第4段:非本组用户权限

文件三个权限为:[read] [write] [execute]
简写及对应数字:r : 4 w : 2 x : 1
二进制表示: 0100 0010 0001

  1. 如果一个文件权限为:[–rwxr-xr-x]
    User:rwx 4+2+1 = 7
    Group:r-x 4+0+1 = 5
    Other:r-x 4+0+1 = 5
  2. chmod 755 文件名:该命令设置权限同上。
  3. 符号类型:chmod [u、g、o、a] [+(加入)、-(除去)、=(设置)] [r、w、x] 文件名称。(chmod 7 文件名,默认为所有)

2.5 添加描述文件

这个可以借助xcode自动生成一个,当然有的话可以直接用。
1、新建一个空工程跑到手机上,Bundle identifier为com.study.WeChatTest,然后进入app包内找到描述文件,复制到WeChat包内。

embedded.png

2、WeChat包内找到 Info.plist 文件,修改Bundle identifiercom.study.WeChatTest

2.6 准备授权文件(Entilements)

利用文章开始我们说的查看描述文件方法,看我们刚刚拷贝到微信包里的描述文件。也就是我们自己空工程生成的描述文件,找到权力文件部分。

Entilements.jpg
打开我们刚刚新建的工程,新建一个reInfo.plist文件。Open As -> Source Code,将权利文件内容粘贴进去。
截屏2020-08-18 22.29.14.png
然后将 Info.plist 文件放到 WeChat.app同路径下。
WeChat.png

2.6 重签app包

codesign -fs"Apple Development: chen_xxxx@xxxx.com (632F4MG322)" --no-strict --entitlements=reInfo.plist WeChat.app

2.7 安装到手机

1597761592347.jpg
点击 +,添加重签过得app包,安装到手机。
注意在这一步时,一定要将app包中Info.plist 文件的Bundle identifier 修改。

三、通过Xcode直接安装

3.1 新建同名工程

重复上面的前三步,新建同名工程,即WeChat工程。选择真机,安装到手机上。

不使用同名工程时,每次 build 会重新创建一个 Mach-O,也就是说此时你就算更换了包,但是这个包里有两个 Mach-O,而运行的还会是你自己的空工程,所以在我们已经下载到 ipa 看得到包里的 Mach-O 的情况下,我们就起和它一样的名字就好。

3.2 替换App包

找到上一步重签名的App包,替换我们新建项目的App包。

这个时候,App包里面的Bundle ID还是微信的,不管,直接运行。

直接运行,App正常安装到手机上,大功告成。

总结

前面之所以要自己手动重签名,主要是让我们了解重签名的过程及原理。当然通过Xcode重签,我们可以看到部分打印,方便我们添加代码运行。

相关文章

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

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

  • ios应用签名原理以及重签名

    一、iOS应用签名原理及过程 签名的过程如上图,接下来我们来简单看下描述文件,打开目录: 随便选择一个证书,用命令...

  • 使用Xcode简化应用重签名

    具体的比较繁琐的签名请移步上一篇文章iOS 应用重签名,这片能帮助我们理解签名的原理以及具体过程,但是比较...

  • 完善改写重签名Mac工具

    参考: iOS App 签名的原理 iOS企业重签名问题及经验 iOS重签名工具开发之路(介绍篇) ios-app...

  • IOS 逆向开发(四)App重签名

    1. 应用签名 应用签名原理回顾 上一篇博客“IOS 逆向开发(三)应用签名”中详细讲解了IOS 应用签名,证书的...

  • 应用重签名以及原理

    代码签名 代码签名是对可执行文件或脚本进行数字签名。用来确认软件在签名后未被修改或损坏的措施。和数字签名原理一样,...

  • 逆向学习笔记

    重签名:iOS App 签名的原理--总结的非常细,一看就明白逆向学习笔记9——代码重签名ios-app-sign...

  • iOS签名机制

    应用签名的原理iOS APP签名机制详解iOS逆向之旅(基础篇) — App的签名机制【Xcode是如何将App安...

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

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

  • iOS 应用签名原理

    本文将讲解苹果的应用签名原理,旨在理解了应用签名后可以对非自己的应用进行重签名。 下面将从三个方面去讲解应用的签名...

网友评论

      本文标题:ios应用签名原理以及重签名

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