Android 对apk进行重签名和查看签名(window 和mac)及生成签名

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)

代码语言:javascript代码运行次数:0运行复制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。

以上:非常感谢

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130147.html原文链接:https://javaforall.cn

相关推荐

世界杯淘汰赛赛程
365bet足球即时比分网

世界杯淘汰赛赛程

📅 06-27 ⭐ 5584
必发365手机版下载

"黼领"组词

📅 10-08 ⭐ 9921
神魔大陆和神火大陆哪个好玩
365bet足球即时比分网

神魔大陆和神火大陆哪个好玩

📅 08-05 ⭐ 1058
捕鳥陷阱
365bet足球即时比分网

捕鳥陷阱

📅 10-11 ⭐ 7138
天美讲堂丨如何确定荧光寿命?
365bat提现

天美讲堂丨如何确定荧光寿命?

📅 09-05 ⭐ 4876
紅館座位表攻略!行數/顏色閘口/最佳位置資訊
必发365手机版下载

紅館座位表攻略!行數/顏色閘口/最佳位置資訊

📅 09-12 ⭐ 2723
推荐阅读 ❤️