iOS安全第一讲~iOS应用签名及重签名

945 阅读2分钟

双重签名:

应用签名使用RSA非对称加密算法

1、Mac电脑通过Xcode生成一对密钥,将公钥通过CSR文件发送给苹果服务器

2、苹果本身也有一对密钥,服务器通过私钥对Mac的公钥进行加密,并携带一些其他信息(服务器配置的设备ID ,AppID 权限文件等),通过开发者证书的形式回传给电脑

3、Mac通过私钥对App进行签名,并且苹果回传的信息打包进App

4、手机用自己的公钥解密服务器颁发的证书,获取服务器加密后的Mac的公钥,并对App进行验证,成功后,可以顺利安装App

重签名

通过codesign对“微信”进行重签名

1、下载微信的砸壳(越狱)应用: 可以通过PP助手等第三方应用下载越狱应用,或者对应用进行砸壳

2、查看微信的签名信息: 首先我们解压砸壳应用拿到Payload下的app,然后查看签名信息 codesign -vv -d Wechat.app

3、获取本地的证书 security find-identity -v -p codesigning,我们获取iPhone的证书(与下边的应用要使用同一个)

4、查看微信App包的内部信息: 删除Plugins和Watch文件夹 (普通证书无法对插件进行签名)

5、我们对Frameworks文件夹下的所有frameworks进行重签名我们使用codesign -fs 本地证书 framework文件

6、回到Wechat.App目录chmod +x Wechat.app,设置执行权限

7、新建工程申请描述文件,真机运行将应用和证书放到手机里

8、拿到刚获取的描述文件,丢到Wechat.app包里边,并且更改info.plist里边的bundleID,与刚创建的应用一致

9、对Wechat.app进行签名:

a、`security cms -Di` 查看描述文件
b、拿到权限文件的内容 "Entitlements"下的内容
c、创建一个a.Plist文件,讲权限文件的内容放到Plist文件下
d、将这个文件放到Wechat.app的同级目录下
e、`codesign -fs 证书 --no-strict --eneitlements=a.plist Wechat.app`

10、command+shift+2 将应用安装到手机上

11、使用Xcode,选择debug-> Attach to Process,找到微信,进行应用附加,便可以动态调试微信这个应用

通过Xcode进行重签名

1、依然要完成上述的4(删除)5(重签Frameworks)

2、新建Wechat的同名工程,直接编译,将修改的Wechat的包替换到新建的包直接真机执行,成功运行