apktool.bat d xuebao.apk --only-main-classes -o test
apk 反编译->修改->打包->签名
-
apk反编译
apktool.dat d apkName.apk -o test<输出目录> # org.jf.util.ExceptionWithContext 由于上面命令行会反编译所有dex文件,而assets文件下的dex文件与源码文件不同,因此会报错 # 只反编译主要的源码文件 apktool d apkName.apk --only-main-classes -o test<输出目录>
-
修改
-
打包
apktool.dat b test<资源文件夹> # 会在test文件夹中生成dist和build文件夹,打包后的apk在dist文件夹下
-
签名
-
签名有两个步骤:1.生成签名(keytool.exe) 2. 签名(jarsigner.exe)两个exe都在jdk_32/bin下
-
生成签名(keytool)
keytool -genkey -keystore demo.keystore -alias my_alias -keyalg RSA -keysize 4096 -validity 10000 genkey 生成密钥对(公钥和私钥) -v 显示密钥库中的证书详细信息 -alias <alias_name> 秘钥的别名,只有前8个字符有效 -keyalg <alg> 生成秘钥的算法,支持DSA和RSA -keysize <size> 生成秘钥的位数,默认1024位,建议使用2048以上的位数 -dname <name> 发布者名称,如未指定,在使用jarsigner签名时会提示输入 -keypass <password> 秘钥的密码 -validity <valDays> 密钥的有效期是多少天 -storepass <password> keystore的密码
-
签名(jarsigner)
jarsigner -verbose -keystore demo.keystore demo.apk my_alias -keystore <keystore-name>.keystore keystore路径 -signedjar <signed-apk-name>.apk 签名后apk文件输出路径 -verbose 输出详细信息 -sigalg <算法> 签名算法 -digestalg <算法> 处理apk使用的哈希算法 -verify 验证已签名的jar文件