准备工具
jdk1.8
apktool.bat
apktool_2.9.3.jar
反编译
提示:jdk解压之后可以不做环境变量配置
- 创建一个文件夹
apk
,把apktool.bat
和apktool.jar
放入apk
文件夹中。 - 打开环境变量配置,在Path中加入刚才创建的
apk
路径
#这个是我的路径
D:\Work\android\apk
- 把要反编译的apk复制到
apk
文件夹 - 然后在
apk
文件夹运行cmd输入一下命令
app.apk是你要反编译的apk文件加后缀
后面那个app是反编译后生成的对应的文件夹名称
apktool d -f app.apk -o app
执行后下图
图上app文件夹是反编译后得到的文件,以上是反编译流程。
反编译后再次编译
app 是对应反编译后的资源文件夹名称
new_app.apk 是对应编译后的apk
apktool b app -o new_app.apk
回编译问题
反编译后再次编译会出现
adb: failed to install new_app.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed collecting certificates for /data/app/vmdl1200438068.tmp/base.apk: Failed to collect certificates from /data/app/vmdl1200438068.tmp/base.apk: Attempt to get length of null array]
从INSTALL_PARSE_FAILED_NO_CERTIFICATES
可以看出来,这个apk没有证书,这就需要重新配置证书
- 首先生成keystore
注意:这里要keystore而不是jsk
appalias 是证书别名
app.keystore 是证书文件
- 需要在jdk的bin目录下执行,输入对应密码,按照提示完成后
keytool -genkey -alias appalias -keyalg RSA -keysize 2048 -validity 36500 -keystore app.keystore
- 然后在bin目录中会生成
app.keystore
- 把
编译后的new_app.apk
复制到bin目录下,然后执行以下命令
sign_app.apk 是配置证书后的apk,执行命令后会自己生成
new_app.apk 是要配置证书的apk
app.keystore 是上一步生成的证书
appalias 是证书别名
jarsigner -verbose -keystore app.keystore -signedjar sign_app.apk new_app.apk appalias