在我们日常Android应用开发中,我们都要对我们开发的apk做签名处理,或者加固,增强我们apk的安全性,防止被逆向反编译,在apk签名这块,我们一般采用JDK自动工具来签名,下面就对相关工具做个简要说明和小结。

首先、我们需要先在电脑上安装JDK和环境变量配置:

JDK下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,在一系列的安装后,确保可以使用keytool 和 jarsigner两个工具能有使用,例如具体位置如下:

1.制作签名工具

C:\>where keytool

C:\Program Files\Java\jdk1.7.0_45\bin\keytool.exe

2.进行签名工具

C:\>where jarsigner

C:\Program Files\Java\jdk1.7.0_45\bin\jarsigner.exe

其次,签名分两个部分,即生成签名签名密钥和对apk做签名:

第一步:生成私钥,使用工具 - keytool:

Keytool 选项描述

-genkey产生一个键值对(公钥和私钥)

-v允许动作输出

-alias<alias_name>键的别名。只有前八位字符有效。

-keyalg产生键的加密算法。支持DSA和RSA。

-keysize产生键的长度。如果不支持,keytool用默认值1024 bits.通常我们用2048 bits 或更长的key。

-dname专有名称,描述谁创建的密钥。该值被用作自签名证书的颁发者和主题字段。注意你可以不在命令行指定。如果没有指定keytool会提示你(CN, OU, and so on)。

-keypass键的密码。

主要为了安全起见,如果没提供,keytool会提示你输入。

-validity键的有效期,单位:天

Note:A value of 10000 or greater is recommended.

-keystore.keystore用于存储私钥的文件。

-storepass私钥存储文件的密码。

主要为了安全起见,如果没提供,keytool会提示你输入。这个密码不会存储在你的shell历史记录中。

keytool -genkey -v -keyalg DSA -keysize 1024 -sigalg SHA1withDSA  -validity 20000  -keystore MyDevel.keystore -alias devel   -keypass MyDevel -storepass MyDevel

(图片来源网络)

第二步:用私钥进行签名 - jarsigner:

Jarsigner 选项描述

-keystore.keystore包含你私钥的存储文件

-verbose显示输出动作。

-sigalg签名算法,用 SHA1withRSA.

-digestalg消息摘要算法,用 SHA1.

-storepass存储文件的密码。

主要为了安全起见,如果没提供,jarsigner会提示你输入。这个密码不会存储在你的shell历史记录中。

-keypass私钥的密码。

主要为了安全起见,如果没提供,jarsigner会提示你输入。这个密码不会存储在你的shell历史记录中。

jarsigner  -verbose -sigalg SHA1withDSA -digestalg SHA1  -keystore myDevel.keystore -storepass MyDevel test.apk devel

(图片来源网络)

至此,我们就可以把重签名后的apk安装包安装到模拟器或手机上面使用,另外,如果是对已有apk做过逆向分析或反编译修改过图标、代码的,再采用回编译后我们仍然要用上面的工具对生成的新apk做重签名,这样才能安装到手机,因为通过apktool回编译后的apk已经破坏了原有签名,即不带签名,那么这个时候就不能安装到真机或模拟器,我们只能通过keytool和jarsigner工具来重签名,对于逆向反编译感兴趣的朋友,可以参考51CTO的这门课程:Android逆向反编译代码注入 - 迈入安卓APP逆向安全大门,学习更多相关知识。

关于keytool和jarsigner工具签名的使用小结的更多相关文章

  1. 【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用

    一个android apk的编译过程 请参考: http://www.2cto.com/kf/201312/261475.html 典型的编译过程: aapt( Android Asset Packa ...

  2. Android签名用keytool和jarsigner制作apk文件

    生成证书 keytool -genkey -alias aeo_android.keystore -keyalg RSA -validity -keystore aeo_android.keystor ...

  3. Android之APK文件签名——keytool和jarsigner

    一.生成密钥库将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWidget.keystore -keyalg RSA - ...

  4. APP为什么签名,使用keytool jarsigner进行签名

    签名(sign):在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核.过程:使用私有密钥数字地签署一个给定的应用程序 作用: 识别应用程序作者 检測应用程序是否发生改变 有种程序 ...

  5. 自动化批量管理工具pssh - 运维小结

    pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可以并发 ...

  6. 自动化批量管理工具salt-ssh - 运维小结

    根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...

  7. Mysql抓包工具 - MySQL Sniffer 使用小结 (含带general_log日志)

    在mysql运维工作中,一般会使用tcpdump做一些分析(直接读分析日志比较难以看明白,在数据库连接值高时使用):对于mysql实时的连接监控分析,通常会使用"mysqladmin/sho ...

  8. redis cluster集群管理工具redis-trib.rb命令小结-运维笔记

    redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib.rb ...

  9. Sublime | 编辑工具Sublime的使用小结

    文章目录 Sublime Package & Usage MarkdownEditing MarkdownPreview Usage Key Bindings Setting (语法高亮和ma ...

随机推荐

  1. 02_套接字编程(socket抽象层)

    1.套接字概述 1.套接概述: 套接是进行网络通信的一种手段(socket) 2.套接字分类:         流式套接字(SOCK_STREAM): 传输层基于tcp协议进行通信         数 ...

  2. js判断一个字符串中出现次数最多的字符及次数

    最近面试总是刷到这个题,然后第一次的话思路很乱,这个是我个人思路 for循环里两个 if 判断还可以优化 var maxLength = 0; var maxStr = ''; var count = ...

  3. h5内嵌微信小程序,调用微信支付功能

    在小程序中不能使用之前在浏览器中配置的支付功能,只能调用小程序专属的api进行支付. 因为需要在现在实现的基础上,再添加在小程序中调用微信支付功能,所以我的思路是这样的 1.在点击支付按钮时,判断是不 ...

  4. oracle之二管理undo

    管理undo(PPT-I-299-309) 7.1 undo的作用(SMON) 使用undo tablespace 存放从datafiles 读出的数据块的前镜像,提供以下四种情况所需要的信息     ...

  5. C#类库推荐 拼多多.Net SDK,开源免费!

    背景介绍 近两年拼多多的发展非常迅速,即便口碑一般,也没有网页端,奈何我们已经全面小康,6亿月收入1000以下,9亿月收入2000以下,所以因为价格原因使用拼多多的用户也越来越多了.同样的,拼多多也开 ...

  6. 必考算法之 Top K 问题

    大家好,这里是<齐姐聊算法>系列之 Top K 问题. Top K 问题是面试中非常常考的算法题. 8 Leetcode 上这两题大同小异,这里以第一题为例. 题意: 给一组词,统计出现频 ...

  7. 腾讯云COS对象存储 Web 端直传实践(JAVA实现)

    使用 腾讯云COS对象存储做第三方存储云服务,把一些文件都放在上面,这里主要有三中实现方式:第一种就是在控制台去设置好,直接上传文件.第二种就是走服务端,上传文件,就是说,上传文件是从服务端去上传上去 ...

  8. express 4.0 connect-mongo 运行时报错的解决方法

    如果使用的是express 4.0,且入口文件app.js的模板引入和中间件配置如下 如果你的package.json文件中有以下版本信息 报出的错误如下所示    或者  那么只需修改app.js中 ...

  9. java对象相等

    https://www.dutycode.com/post-140.html 简单来首,Object方法里的equals也是直接判断两个引用是否指向同一个地址,即引用同一个对象 public bool ...

  10. java 常用类-String-1

    一.字符串相关的类 1.1 String 的特性 String类:代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. String是一个fin ...