使用apktool+apksigner实现反编译和重签名(v2签名)

apktool反编译参考
https://blog.csdn.net/aidijava/article/details/136120097
apktool修改targetsdk参考
https://blog.csdn.net/Deadeyess/article/details/122251359
apksigner重签名参考
https://blog.csdn.net/xiaxl/article/details/118791874
https://blog.csdn.net/Andrio/article/details/107855762
apktool安装步骤不再赘述,第一个参考博主写得十分清楚。

1 apktool反编译步骤

1解包

切换路径到apk路径,app-release.apk为apk名称

apktool d app-release.apk

在同路径下得到同名项目文件

2修改内容

apktool得到的项目文件可简单实现xml文件修改,日后再继续学习smail文件修改。

3打包

删除meta-inf
仍在同路径下 app-release为项目名称

apktool b app-release

在项目路径\dist下可看到新生成的apk

4签名

4.1生成密钥库

keytool -genkey -alias android_keystore -keyalg RSA -validity 20000 -keystore android.keystore

4.2拷贝密钥库到打包apk的同级目录

4.3签名

cd 进入项目的dist路径,即apk和秘钥库文件夹
android.keystore为秘钥库名称
app-release-signed.apk 为自定义签名后的apk名称
app-release.apk 为当前目录下的apk名称

jarsigner -verbose -keystore android.keystore -signedjar app-release-signed.apk app-release.apk android_keystore

但是
部分app会出现APK安装失败:Failed to extract native libraries, res=-2,可参考以下博客内容
https://blog.csdn.net/baidu_36743221/article/details/108766864
即在AndroidManifest.xml加上

android:extractNativeLibs="true"

2 apksigner实现v2签名

jarsigner只是对apk进行了V1签名,当targetsdk>=30时,需要v2签名。(https://blog.csdn.net/qq_35559358/article/details/107408471)
sdk\25.0.0及后续版本,会有一个apksigner.bat执行脚本,可用于v2签名
在这里插入图片描述
cd到该路径下进行签名
key.jks是使用as签名时生成的jks文件
在这里插入图片描述

//直接用apksigner进行签名
apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
 
//使用Jar命令进行签名
java -jar apksigner.jar sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)

验证签名

//直接用apksigner进行验证
apksigner verify -v --print-certs (apk地址)
    
//使用Jar命令进行验证    
java -jar apksigner.jar   verify -v --print-certs (apk地址)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值