本文主要是介绍【Android安全】使用jarsigner命令对apk进行重签名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、生成自己的密钥库
1、查看帮助信息,cmd模式下,输入keytool -genkey回车,得到如下参数解析
keytool-genkeypair [OPTION]...
生成密钥对
选项:
-alias <alias> 要处理的条目的别名
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-sigalg <sigalg> 签名算法名称
-destalias <destalias> 目标别名
-dname <dname> 唯一判别名
-startdate <startdate> 证书有效期开始日期/时间
-ext <value> X.509 扩展
-validity <valDays> 有效天数
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
使用 "keytool -help" 获取所有可用命令
2、生成自己的密钥库,需要指定的参数:--keystore -alias -keyalg -kyesize -validity
示例:keytool -genkey -v -keystore jiduan.keystore -alias jiduan -keyalg RSA-keysize 2048 -validity 36500, 会提示输入一些列信息,如果不想要秘钥库口令,可以直接回车,如果输入口令,以后使用时需要使用口令。另秘钥的别名也需要记住,因为后面的jarsigner 要用到
执行成功后,会在当前目录下生成密钥库文件jiduan.keystore
二、重签名
1、执行jarsigner -h,查看帮助信息
用法: jarsigner [选项] jar-file 别名
jarsigner -verify [选项] jar-file [别名...]
[-keystore<url>] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-keypass <口令>] 私有密钥的口令 (如果不同)
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的 JAR 文件、
[-verbose[:suboptions]] 签名/验证时输出详细信息。
子选项可以是 all, grouped 或
[-certs] 输出详细信息和验证时显示证书
[-tsa<url>] 时间戳颁发机构的位置
2、重签名需要指定参数
jarsigner -verbose-digestalg SHA1 -sigalg MD5withRSA -tsa https://timestamp.geotrust.com/tsa-keystore jiduan.keystore -storepass android -signedjar yfq_signed.apk yfq.apkjiduan
-signedjar 签名后的apk 待签名的apk 密钥库别名
3、验证签名信息
jarsigner -verify-verbose -certs yfq_signed.apk
4、优化apk包(内存占用)
需要把build-tools下的zipalin包放到tools下
执行zipalign -h,查看帮助信息
Zip alignmentutility
Copyright (C) 2009The Android Open Source Project
Usage: zipalign[-f] [-p] [-v] [-z] <align> infile.zip outfile.zip
zipalign -c [-v] <align>infile.zip
<align>: alignment in bytes, e.g. '4'provides 32-bit alignment
-c: check alignment only (does not modifyfile)
-f: overwrite existing outfile.zip
-p: page align stored shared object files
-v: verbose output
-z: recompress using Zopfli
执行zipalign -v 4 in.apk out.apk,对in.apk优化,得到out.apk
这篇关于【Android安全】使用jarsigner命令对apk进行重签名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!