也谈Android签名机制
1. 前言 关于Android的签名机制,在一个月前就看过了,当时还写了下流程,感觉没有太大的技术含量就没有记录。最近在看APK安装过程,突然又想起安装过程包含了APK的验证,关于APK的验证无非就是签名的逆过程。但是发现自己对签名过程好像模糊了很多,遂决定记录下签名过程。 2. 关于签名 Android的签名现在分为两个版本:v1和v2,因为v1版本签名过程的缺陷,造成了APK可能被攻击。 v1签名:签名和摘要文件为APK解压后的META-INF文件夹下的*.MF、*.SF、*.RSA文件,其签名过程需要对文件进行解压并且计算每个文件的摘要。 v2签名:签名信息存储在ZIP文件格式中。7.0以上支持,7.0以下不支持,只能采用v1签名。 v2签名块位置 3. v1签名源码 我用到的源码都是在在线源码网站上下载的,这里用到了SignApk.java文件。 我们都知道如果使用命令行签名的话,都是执行的main方法: public static void main(String[] args) { // 对输入参数的解析和验证 ...... boolean signWholeFile = ...