1.反編譯
在cmd中執(zhí)行反編譯命令:apktool d apk的名字背蟆,生成文件夾ztgame
apktool d ztgame.apk
2.重新編譯并簽名生成APK
- 在cmd中執(zhí)行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
等表示傳入的參數(shù)意義以及對(duì)應(yīng)的位置,$1
$4
沒(méi)有對(duì)應(yīng)的key值户敬,但是對(duì)應(yīng)的位置是一樣的
#!/bin/sh
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $3 -signedjar $2 -storepass $5 -keypass $6 $1 $4
- 在git中執(zhí)行命令,不需要二次輸入密碼進(jìn)行驗(yàn)證(記得拷貝keystore文件到對(duì)應(yīng)文件夾)
./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是根據(jù)腳本簽名之后生成的最終簽名的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.忘記別名和密碼時(shí)漆撞,通過(guò)簽名文件獲取別名和別名密碼
- 下載AndroidKeystoreBrute_v1.05.jar到指定目錄
- 新建一個(gè)txt文本殴泰,里面按行寫上你可能記得的密碼
- 拷貝簽名文件到該目錄
- CMD中執(zhí)行命令(一般使用第三個(gè)命令較好)
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進(jìn)行V2簽名和驗(yàn)證
//簽名命令
java -jar apksigner.jar sign --ks 簽名文件.keystore --ks-key-alias 別名 --ks-pass pass:密碼 --key-pass pass:密碼 --out output.apk input.apk
//驗(yàn)證是不是V2簽名
java -jar apksigner.jar verify -v my.apk
-
驗(yàn)證結(jié)果于宙,如果顯示V2為true,則表示使用的是V2.
apktool.jpg