Android 对apk进行重签名和查看签名(window 和mac)及生成签名
生成签名文件:其实是有很多工具可以做到,这里不过是想用命令来生成
其命令如下:生成的签名默认在c盘根目录下
keytool -genkey -alias aaaa.keystore -keyalg RSA -validity 2000 -keystore newandroid.keystore
备注说明:-alias后面跟着的是别名(android.keystore) -keystore后面跟着的是具体的签名文件(及签名文件的命名–newandroid.keystore)
当使用这个命令生成后,会有个警告,不符合pkcs12标准,需要消除掉(也可以不消除),使用如下命名:
keytool -importkeystore -srckeystore android.keystore -destkeystore newandroid.keystore -deststoretype pkcs12
将上面的android.keystore签名迁移到newandroid.keystore中,其各种参数不变。
截图如下
标题实际上说了二个问题:查看签名和重签名
首先说:如果对方给了你.keystore之类的文件格式的签名文件后,实际上时可以查看相关的签名的信息的,只需要在cmd控制台运行如下命令即可:
直接运行keytool命令时不可行的 需要配置环境,将keytool.exe所在的目录配置到环境变量中
可以直接下jdk安装配置,也可以用as自带的目录:\jre\bin
命令:keytool -list -v -keystore xxxx.keystore 即可得到如下示意图信息:
非解包的情况下:查看签名
keytool -list -printcert -jarfile app-release-sign.apk
先说一个简单的查看apk的签名信息:
第一步:将apk解压
第二步:找到META-INF 下的.RSA文件
第三步:在mac终端或者window控制器上输入命令:
keytool -printcert -file xxx.RSA回车,即可查看签名文件.将.RSA文件拖入到-file后面,即可查看:如下图
其中:MD5的值就是签名的信息(已被隐藏)
去掉apk的签名就比较简单了:
反编译apk后 去掉original里面的META-INF文件夹即可 然后回编译出来即正常apk
重新签名就有点复制了:
首先我们必须拿到未签名的apk 和需要签名的keystore文件 以及别名和key password 和 key store password信息.
最简单的办法:使用360签名工具,但是只适用于window系统,其签名工具下载地址如下:
http://www.pc6.com/softview/SoftView_230893.html
但是mac只能使用命令进行签名
签名命令如图下:
使用jarsigner进行签名
jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称]
或者直接把密码给带进签名里面去,就不用手动输入密码库密码了:命令如下
jarsigner -verbose -keystore [您的私钥存放路径] -storepass 密码库密码 -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称]
或者
jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称] -storepass 密码库密码
jarsigner的参数说明,以上的路径都是我自己电脑里面的路径
您的私钥的存放路径,指的是 keystore文件 即路径为/Users/liangzijishu/Desktop/keys/okGame.jks
签名后文件存放路径,指点是签名后 产生的新的apk文件 即存放路径为/Users/liangzijshu/Desktop/abc.apk(并重新命名了)
[未签名的文件路径] 指定要签名apk文件的绝对路径,也就是别人给你的未签名的apk文件 /Users/liangzijishu/Desktop/天涯明月刀.apk
[您的证书名称] 是指您创建密钥时您设置的证书名称 即仓库的别名 即sihaoGame
密码库密码是指 仓库密码
命令如下图:
同时输入的密钥库密码短语:就是key store password(此时不会显示密码 直接输入 回车即可)
可能会报的错如下:
第一:jarsigner 错误: java.lang.RuntimeException: 密钥库加载: /Users/liangzijishu/okGame.jks(No such file or directory)
keystroe的拓展名 可以为.jks(或者是.store 未验证) 但是不能为.txt 否则会报错误
第二种报错:
jarsigner: 找不到kaoyan_keystore的证书链
即:由于证书名称写错了,证书名称即Alias(你设置的别名)
第三种报错:
jarsigner 只能使用一种别名
即在签名的时候 即某个路径下面出现了空格 例如:C:\Users\Administrator\qyysnew new\dist
则qyysnew new中间出现了空格 实际上是一个目录
第四种报错: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1272757617.tmp/base.apk: META-INF/CERT.SF indicates /data/app/vmdl1272757617.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?]
签名后安装时出现此问题:是因为原来的apk带有v2签名,即首先需要去掉v2签名,然后再签名即可
以上信息:还要感谢我的好盆友及一位博主:
博主博客如下:
https://www.jianshu.com/p/dbcfff997ccb
手动对齐操作:
手动对齐apk:zipalign 4 unaligned.apk aligned.apk (或者zipalign -v 4 unaligned.apk aligned.apk)
验证是否对齐:zipalign -c -v 4 application.apk。
以上:非常感谢
Android 对apk进行重签名和查看签名(window 和mac)及生成签名相关推荐
- php微信生成签名_微信APP支付服务端PHP生成签名
官网支付说明 商户系统和微信支付系统主要交互说明: 步骤1:用户在商户APP中选择商品,提交订单,选择微信支付. 步骤2:商户后台收到用户支付单,调用微信支付统一下单接口.参见[统一下单API]. 步 ...
- android APK内存多少字节,Android apk安全测评、应用加固、字节对齐、二次签名(有这一篇就够了)...
本文将通过前言.apk安全测评.应用加固.字节对齐.二次签名.总结共6大版块来阐述 一.前言 评判一个App是否出色,除了看它的性能.体验外,本人认为最为重要的是它的安全性.市面上apk安全评测.加固 ...
- [转]重新签名Android pre-install APK
本文转自:http://www.cnblogs.com/whuiscool/archive/2010/11/24/1886476.html 题外话: 最近在研究Android APK的自动化测试方法, ...
- Android Studio 生成签名的APK
生成签名 打开项目以后,点击项目,选择 Build 菜单, 然后选择 Generate Signed APK. 如下图所示: 打开生成对话框: 选择 Create new... 按钮, 生成新的Key ...
- java 1.8签名apk_给Android的APK程序签名和重新签名的方法
签名工具的使用Android源码编译出来的signapk.jar既可给apk签名,也可给rom签名的.使用格式: java –jar signapk.jar [-w] publickey.x509[. ...
- Android签名机制:生成keystore、签名、查看签名信息
2019独角兽企业重金招聘Python工程师标准>>> Android独有的安全机制,除了权限机制外,另外一个就是签名机制了.签名机制主要用在以下两个主要场合起到其作用:升级App和 ...
- Android编译系统apk并进行系统签名安装
前言 最近接到一条需求,需要调用WifiP2pManager.setWfdInfo方法进行投屏接收端功能开发,但查看此方法,发现是系统级别api,通过反射也无法调用,所以想到能否通过设置app为系统级 ...
- Android apk安全测评、应用加固、字节对齐、二次签名(有这一篇就够了)
本文将通过前言.apk安全测评.应用加固.字节对齐.二次签名.总结共6大版块来阐述 一.前言 评判一个App是否出色,除了看它的性能.体验外,本人认为最为重要的是它的安全性.市面上apk安全评测.加固 ...
- Android签名 一 查看签名信息
你可能想知道 通过这篇文章可以解决哪些问题以及学到什么: 1.如果我们有一个应用,如何查看应用的签名信息? 2.如果我们有签名原始文件,如何查看签名文件中的签名信息? 这篇文章介绍了如何查看应用和签名 ...
最新文章
- VMware虚拟机搭MAC系统
- Linux命令之Ethtool
- mysql设置约束l命令_mysql建表约束,sql
- ASP.NET MVC3 301永久重定向实现程序
- 「Python」unindent does not match any outer indentation level
- ipc$连接失败的常见原因
- 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
- Linux下显示当前目录下的全部目录或文件
- LeetCode--171--Excel表列序号
- protobuf使用错误总结
- Python 基础 —— str
- cmake编译时不能指定头文件路径?
- kali自定义分辨率
- mysql 获取百分比函数,并对结果保留2位小数。
- 美股,期货和国债随着大选进行中持续大幅度波动,华尔街如何看待这次结局?
- qtdesigner添加菜单栏工具栏及监听事件
- webpy使用说明(一)
- 《人工智能》课程习题
- k阶子式、主子式、顺序主子式、余子式、代数余子式
- 揭露“番茄花园版”侵权物的本质
热门文章
- OpenCV对TBB的支持
- wx:if 与wx:else
- EOS 安装本地环境,发币教程,本地节点
- JAVA的简单数据类型和复合数据类型
- Framer多车型切换实现的网络功能
- Android自定义实现按周签到打卡功能
- JDK1.8之前造成HashMap死链问题
- 亚马逊测评系统软件搭建教程:luminati+候鸟防关联浏览器环境
- Chrome浏览器安装Vue.js devtools插件
- //编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg)