Android_签名

生成签名文件

  • 命令行
cmd_create.png

keytool工具是Java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias test 表示证书别名为test
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 2000表示有效时间2000天
-keystore test表示要生成的证书名称为test
生成的数字证书test里面包换了非对称加密的私钥、公钥和证书。

  • eclipse
    选中任意一个工程,右键->Android tools->Export Signed Application Package
create_new_keystore.png

填写如下相关信息->finish


createpng

进行签名

jarsigner -verbose -keystore test -storepass 123456 -signedjar game\dist\game_signed.apk game\dist\game.apk test

jarsigner是Java的签名工具
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的android123.keystore签名证书文件。
-signedjar game_signed.apk表示签名后生成的APK名称,game.apk表示未签名的APK Android软件, android.keystore表示别名

签名后的apk最好做一次4自己对齐操作

zipalign -f 4 game\dist\game_signed.apk apks\game\game_packed.apk

签名后解开apk文件里面会多了META-INT文件夹

meta-inf.png
MANIFEST.MF.png

里面包含了所有apk中资源分别求Hash值

TEST.SF.png

首先对MANIFEST.MF整个文件求Hash值存放在SHA1-Digest-Manifest中,然后再对MANIFEST.MF里面的Hash值再求Hash值。

CERT.RSA保存加密后的信息,非对称加密的公钥,发行者名称和主体名称,生效日期和终止日期等

签名的作用

  • 保证内容的完整性
    在安装APK时,计算APK中每个资源的Hash值与MANIFEST.MF里面的Hash值做对比;如果成功,再计算MANIFEST.MF文件的Hash值与CERT.SF的Hash值做对比;如果成功,使用公钥解密CERT.RSA已加密的Hash值,然后与对CERT.SF文件求出的Hash值做对比;如果成功,表示验证通过。
    如果恶意修改代码,再恶意修改MANIFEST.MF对应的Hash值,再恶意修改CERT.SF的Hash值,但是最后无法修改CERT.RSA里面的Hash值,因为没有私钥。
    1)如果当前的APK被篡改,直接放入手机中运行,第一步在计算APK中每个资源的Hash值与MANIFEST.MF里面的Hash值做对比,这一步就Failed了。
    2)如果当前的APK被篡改后重新签名,由于系统中原有同样包名的apk,发现与原有签名的公钥不一致,直接被reject。除非把原应用删除,再安装新的应用。
  • shareUid
    如果两个应用shareUid,说明两个应用可以对对方的私有目录进行访问,这就造成了安全隐患。如果360和QQ,sharedUid,那么360就可以访问QQ目录下(/data/data/com.tencent/...)的私有数据。所以我们规定shardUid的两个应用必须使用同样的私钥进行签名,在CERT.RSA体现在公钥一致。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Android APK打包流程 ** 资源预编译 **为每一个非assert资源生成一个ID并保存在一个R文件...
    DevSiven阅读 721评论 0 5
  • 对于 Android 开发者而言, APK 签名的重要性不言而喻。Android 7.0 后 APK 签名已经从基...
    Cavabiao阅读 9,999评论 7 30
  • 检查app的证书和签名对Android签名验证app的签名 命令行代码: [进入文件目录]cd [文件目录][复制...
    MarcoHorse阅读 612评论 0 0
  • 0x01 回顾 分析验签过程之前,有必要先回顾一下Android应用的签名过程: 对APK包中的每个文件做一次运算...
    N8_xEnn7nA1阅读 5,397评论 6 2
  • 文/娜娜 三十余年里能让我夜以继日废寝忘食的日子屈指可数,近两日便是其一。 在我的世界里,似乎观看电视连续剧已经是...
    芙蕖姑娘阅读 629评论 0 1