命令行APK签名/查看apk签名/查看key签名

  • 发表于
  • Crack , 设计开发

命令行使用JKS文件为APK签名

命令行APK签名/查看apk签名/查看key签名

目前拿到一个机器的Android系统签名,以JKS格式文件提供,要如何对APK签名呢?按如下步骤操作:

jarsigner -verbose -keystore xxx.jks -signedjar xxx_signed.apk xxx_unsigned.apk xxx_alias

其中,xxx.jdk为相应的签名文件,xxx_alias为签名文件里面配置的keystore别名。例如:

jarsigner -verbose -keystore xbh.jks -signedjar Explorer_signed.apk Explorer_unsigned.apk android

执行该命令后,要求输入keystore的密码,输入完后,碰到如下提示:

jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 6716 but got 6831 bytes)

查了下资料,是由于APK已有签名了,于是执行如下命令删除到现有签名:

zip -d Explorer_unsigned.apk META-INF/\*

命令执行后有如下提示:

deleting: META-INF/MANIFEST.MF   deleting: META-INF/CERT.SF   deleting: META-INF/CERT.RSA   

执行完该命令后,再执行上面的jarsigner命令重新签名即可,此时有如下提示输出:

正在添加: META-INF/MANIFEST.MF  正在添加: META-INF/ANDROID.SF  正在添加: META-INF/ANDROID.RSA  正在签名: res/drawable-1280x600/content_item.9.png  正在签名: res/drawable-1280x600/explorer_logo.png  正在签名: res/drawable-1280x600/icon.png  正在签名: res/drawable-1280x600/icon_apk.png   正在签名: res/drawable-1280x600/icon_audio.png  正在签名: res/drawable-1280x600/icon_copy.png  正在签名: res/drawable-1280x600/icon_delete.png  正在签名: res/drawable-
1280x600/icon_folder.png  正在签名: res/drawable-res/layout/tool_bar.xml  jar 已签名。
  警告:   签名者证书为自签名证书。
  未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2154-09-25) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。
   至此使用JKS文件为APK签名完成。

更多签名操作

查看jks签名库里的签名信息:

keytool -v -list -keystore keystore.jks

更改别名:

keytool -changealias -keystore my.jks -alias myalias -destalias otheralias

删除别名:

keytool -delete -alias myalias -keystore my.jks -storepass jkspassword

查看.apk包里的签名详细:

jarsigner -verify -verbose -certs app-release.apk

通过命令生成密钥库和别名

keytool -genkey -alias myalias -keyalg RSA -keystore my.jks -keysize 2048 -validity 9125 -dname "CN=FirstAndLastName, OU=OrganizationalUnit, O=Organization, L=CityOrLocality, ST=StateOrProvince, C=CountryCode, EMAILADDRESS=email@gmail.com"

----注:-keyalg:加密算法   -keysize:加密位数   -validity:有效期(天) -dname:证书详细信息

导出证书:

keytool -export -alias myalias -keystore my.jks -file myalias.crt -storepass jkspassword

打印证书信息:

keytool -printcert -file myalias.crt

将证书导入到密钥库并生成别名

keytool -import -alias myotheralias -file myalias.crt -keystore my1.jks -storepass jkspassword

修改别名里的信息,注MD5的值也会同时被修改

keytool -selfcert -alias myalias -keypass aliaspassword -keystore my.jks -storepass jkspassword -dname "CN=FirstAndLastName1, OU=OrganizationalUnit1, O=Organization1, L=CityOrLocality1, ST=StateOrProvince1, C=CountryCode1, EMAILADDRESS=email1@gmail.com"