欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[tool] apk反编译工具 jadx 使用

程序员文章站 2024-03-24 14:04:34
...

#[tool] apk反编译工具 jadx 使用
##一.下载
1.工具下载
下载地址: https://bintray.com/skylot/jadx/releases#files(但是可能不是最新的)
2.源码下载
下载地址: https://github.com/skylot/jadx
##二. 源码编译
下载下来之后是源码后解压,进入到目录中执行命令:

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

[tool] apk反编译工具 jadx 使用
主要是拉下来jadx的git主工程,然后跑对应的gradle task。之后会生成运行脚本,多出了build目录:

[tool] apk反编译工具 jadx 使用
生成了可运行的脚本 jadx,jadx-gui等:

[tool] apk反编译工具 jadx 使用

##三. 使用

  1. 可以将build下的jadx文件夹拷贝至别处使用,运行jadx-gui:
aaa@qq.com:~/dev_tools/jadx-master/build/jadx/bin$ ./jadx-gui

gui打开后可以选择需要反编译的apk:

[tool] apk反编译工具 jadx 使用

找到apk点击确定之后反编译需要一定时间,耐心等待,之后即可以显示反编译后的代码,如下是反编译豌豆荚apk后的结果:

[tool] apk反编译工具 jadx 使用

  1. 同样可以使用命令直接反编译目的地址的apk:
./jadx-gui ~/下载/Wandoujia_224660_web_inner_referral_binded.apk 

##三. 优点:

  1. 方便的搜索功能(支持全局类,方法,text查询):
    [tool] apk反编译工具 jadx 使用

  2. 可以导出gradle工程,使用Itellij或AS看代码
    File->save as gradle project 选择一个新文件夹(最好新建空文件夹,生成的文件在选择的文件夹中)
    生成后即可用IDE查看代码了:
    [tool] apk反编译工具 jadx 使用

##四. 出错处理

aaa@qq.com:~/dev_tools/jadx-master/build/jadx/bin$ ./jadx-gui
Exception in thread "main" java.lang.UnsupportedClassVersionError: jadx/gui/JadxGUI : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

jdk版本不对,jdk版本改为1.8就ok了