1.反编译
在cmd中执行反编译命令:apktool d apk的名字,生成文件夹ztgame
apktool d ztgame.apk
2.重新编译并签名生成APK
- 在cmd中执行apk编译命令:apktool b 文件名 -o 生成pak名字.apk(例如:ztgame_debug.apk),生成apk为ztgame_debug.apk
apktool b ztgame -o ztgame_debug.apk
- 新建.sh脚本(例如:signer.sh)
注意:
-keystore $3
-signedjar $2
等表示传入的参数意义以及对应的位置,$1
$4
没有对应的key值,但是对应的位置是一样的
#!/bin/sh
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $3 -signedjar $2 -storepass $5 -keypass $6 $1 $4
- 在git中执行命令,不需要二次输入密码进行验证(记得拷贝keystore文件到对应文件夹)
./signer.sh ztgame_debug.apk ztgame_sign.apk wd.keystore com.ztgame.wd keystore密码 alias密码
./signer.sh 未签名apk的名字 想要生成的签名apk的名字 签名文件kestore 别名alias keystore密码 alias密码
1.这里ztgame_debug.apk为上面编译生成的apk,ztgame_sign.apk是根据脚本签名之后生成的最终签名的apk
2.com.ztgame.wd是别名
3.直接查看APK的MD5值
keytool -printcert -jarfile xxx.apk
//APK后缀改成zip,然后解压缩,在META-INF找到xxx.RSA文件
keytool -printcert -file 解压后的RSA
4.直接查看签名文件的MD5和别名(需要密码)
keytool -list -v -keystore 签名文件
5.忘记别名和密码时,通过签名文件获取别名和别名密码
- 下载AndroidKeystoreBrute_v1.05.jar到指定目录
- 新建一个txt文本,里面按行写上你可能记得的密码
- 拷贝签名文件到该目录
- CMD中执行命令(一般使用第三个命令较好)
java -jar AndroidKeystoreBrute_v1.05.jar -m 1 -k <...keystore> -start AAAAAA
java -jar AndroidKeystoreBrute_v1.05.jar -m 2 -k "C:\\mykeystore.keystore" -d "wordlist.txt"
java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k "C:\\mykeystore.keystore" -d "wordlist.txt"
-
AndroidKeystoreBrute_v1.05.jar下载地址
链接:https://pan.baidu.com/s/1kUXyhAv 密码:zjo3
6. 使用apksinger进行V2签名和验证
//签名命令
java -jar apksigner.jar sign --ks 签名文件.keystore --ks-key-alias 别名 --ks-pass pass:密码 --key-pass pass:密码 --out output.apk input.apk
//验证是不是V2签名
java -jar apksigner.jar verify -v my.apk
-
验证结果,如果显示V2为true,则表示使用的是V2.