1.工具
有很多反编译工具, 我们平时最常用的是dex2jar+jd-gui
和ApkTool
贴上工具下载链接
https://github.com/pxb1988/dex2jar dex2jar下载
http://jd.benow.ca/ jd-gui下载
https://github.com/iBotPeaches/Apktool ApkTool下载
2.用法
解压apktool
解压dex2jar
解压jd-gui
3.配置环境变量
配置apktool的环境变量
配置dex2jar的环境变量
这里记得配以下JAVA_HOME环境变量,笔者之前之前在path中配jdk的路径,发现运行jd-gui会报错“This application requires a Java Runtime Environment 1.8.0 ", 然后原因jd-gui会检测有没有JAVA_HOME在注册表,对应的指向是不是1.8.0. 如果没配,即使jdk是1.8的版本,依然会报错。
4.开始反编译
三件套分别是干什么的?
1.apktool
运行命令 apktool.bat d xxx.apk 可以得到 不乱码 的清单文件和res资源文件,有.smali文件阅读基础的可以直接看人源码。
2.dex2jar
用这个工具之前,你需要先解压apk.
更改文件格式,由.apk变为.zip
解压
得到几个classxx.dex文件
运行
d2j-dex2jar.bat classes.dex
得到.jar格式的dex文件
3.jd-gui出场
选择.jar文件的打开方式,已jd-gui打开。双击即可,哦了
4.大多数类jd-gui可以打开,做了安全措施的话,就会显示// INTERNAL ERROR /
是不是一筹莫展。别着急宝贝,这里有个神奇Luyten,它需要jdk 1.7-1.8
5.修改代码后,开始重编译
安装报错
apktool出场,运行命令 apktool.bat b “xxx文件夹”,命令运行成功之后,在xxx文件夹/dist/生成对应apk
直接adb install ,会报这样的错
adb: failed to install .\yunjiV4-yj-release-v3.68.08131-36808131-20190813-221318.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl437485846.tmp/base.apk: Attempt to get length of null array]
意思就是没有证书,需要签名
如何给apk签名
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]
命令格式及参数意义:
-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkin] -> 待签名的文件名
[alias] -> 证书别名
完美