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

本文转自 原文链接:https://blog.csdn.net/willba/article/details/79476904 只为记录下来担心找不到博主或者博主下架了此文章。

生成签名文件:其实是有很多工具可以做到,这里不过是想用命令来生成
其命令如下:生成的签名默认在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 即可得到如下示意图信息:

先说一个简单的查看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 否则会报错误

1
2
第二种报错:
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。

以上:非常感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值