反编译apk_apktool使用
apktool 下载地址
https://ibotpeaches.github.io/Apktool/install/
安装说明
- 至少已安装Java 1.8吗?
- java -version在命令行/命令提示符下执行是否返回1.8或更高?
- 如果没有,请安装Java 8+并将其设置为默认值。(Java 7现在也可以使用)
安装Apktool
-
Windows
:
- 下载Windows包装程序脚本(右键单击,将链接另存为
apktool.bat
) - 下载apktool-2(在这里找到最新的)
- 将下载的jar重命名为
apktool.jar
- 将两个文件(
apktool.jar
&apktool.bat
)移至Windows目录(通常为C://Windows
) - 如果您无权访问
C://Windows
,则可以将这两个文件放在任何位置,然后将该目录添加到您的环境变量系统PATH变量中。 - 尝试apktool通过命令提示符运行
- 直接终端输入 apktool 会有提示信息就可以用了
- 如果想简单用下,只有在apktool 目录下
- java -jar apktool.jar
- java -jar apktool.jar d -f lei_wifi-release_108_1_360_sign.apk -o leida2
- 下载Windows包装程序脚本(右键单击,将链接另存为
注意-包装脚本不是必需的,但很有用,因此您不必java -jar apktool.jar一遍又一遍地输入。
apktool 参数解释
反编译时注意: 没有添加 -s时(如果只是查看资源文件不不管)
java -jar apktool.jar d -f lei_wifi-release_108_1_360_sign.apk -o leida2
此时 dex 文件直接反编译成了 smali 文件,如果需要 .dex 文件。
此时再运行:添加 -s
$ apktool d -s -f test.apk
-d 反编译 apk 文件
-s 不反编译 dex 文件,而是将其保留
-f 如果目标文件夹存在,则删除后重新反编译
apktool重新打包
$ apktool b b_test -o newtest.apk
-b 是指 build
b_test 是刚才反编译出的文件所在的目录
-o 用于指定新的文件名称,这里指定为「newtest.apk」
注意:
此时的 apk 文件是不能安装的,还需要对其进行签名。
- 对新的 Apk 进行签名:
签名文件生成
keytool -genkey -alias test -keypass 123456 -keyalg RSA -keysize 2048 -validity 36500 -keystore D:/keys/test.keystore -storepass 123456
注意:
1.路径什么的需要修改
2.alias别名需要修改
3.keysize1024位生成的是MD5withRSA的算法,2048位生成的是SHAwihtRSA的算法,我试了下好像不能直接改keyalg的算法,会报错
4.validity有效日期,天
5.输入这条语句后回车后会要输入一些信息,照着来即可
查看签名的信息
keytool -list -v -keystore 签名路径 -storepass 密码
查看apk签名信息
jarsigner.exe -verify APK文件路径 -verbose -certs
链接:https://www.zhihu.com/question/29370382/answer/590981557
打包apk
可用于没有签名和已经签名的apk,再次签名。
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]
命令格式及参数意义:
-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkin] -> 待签名的文件名
[alias] -> 证书别名
————————————————
使用示例
jarsigner -verbose -keystore leida.keystore -signedjar apk_new.apk apk_fan.apk leida.keystore
原文链接:https://blog.csdn.net/qq_25506203/article/details/80899521
apk反汇编工具apktool问题之DexBackedDexFile$NotADexFile
添加: --only-main-classes
java -jar apktool.jar d -f 108_1_360_sign.apk -o leida2 --only-main-classes