JDA(javadecompile analysis)是一款以dex为核心的java反编译工具,同时支持apk、dex、jar文件的反编译,支持动态重命名。该软件主要是用来反编译分析代码而不是反编译出来完全正确的java代码,运行需安装jdk1.8及以上版本版本(jdk1.7应该也行)。
一、背景
作者是搞android开发和逆向安全的,逆向安全是主业,用jeb用的很不爽,特别是分析某稍微大一点的软件后卡和老报OOM,后面又没有更好的破解版jeb,刚好去年年底辞掉工作后有空,于是开始编了个反编译软件,加上疫情期间没出去找工作,所以就在这段时间内写完了这个反编译工具jda。 搞这个东西花了作者挺多时间的,宁愿分析X梆的vmp也不愿搞这个软件,搞vmp花不了很多时间,而这个软件的算法让我很头疼。一句话就是用别人的东西收费还用得不爽加上自己有时间就编了这个软件。
二、主要功能
1、 支持apk、dex、jar文件反编译。
2、支持apk包含多个dex。
3、支持直接重命名类、方法、属性、本地变量。
4、支持基本的反混淆。
三、使用手册
1、 菜单
(1)、文件—>打开
可以打格式是.apk、.dex和.jar的文件。
《1》、.apk
则默认加载压缩包(apk实际上就是zip压缩包)第一层目录下面的所有以.dex文件结尾的文件,也就是说支持多个dex反编译。
《2》、.dex
这没什么好说的,直接加载。
《3》、.jar
jar也是zip压缩包,如果里面第一层目录有.dex,走上面的《1》步骤。如果是.class文件,则把这个jar转成dex文件再加载,jar转dex存在失败的可能,失败控制台会输出找不到dex的提示。
打开上面的三种文件都会在当前目录下生成一个文件夹来缓存数据。
(2)、文件—>保存
把重命名的类、属性、方法和本地变量保存在本地,下次打开相同的文件会提示加载。
(3)选项—>注释解析类型
开启从注释信息解析类、方法返回类型、方法参数类型、属性类型的泛型数据,不开启不会解析泛型,例如,
开启:pivate static List list;
不开启:pivatestatic List list;
开启注释解析类型存在一定的错误,但不严重 。
(4)选项—>隐藏桥方法
桥方法是编译器自己添加上去,去掉不影响反编译。
(5)选项—>反编译超时(毫秒)
为了防止某些方法代码太复杂没法反编译出来卡死不动而添加。超过设置时间反编译该个方法失败。
(6)选项—>重命名类、重命名方法、重命名属性
开启反编译时把类、方法、属性名称是单个字符或是关键字就会按一定规则进行重命名,加强可读性。如果是外部类不进行重命名。
反编译从命名跟用户自己n键重命名没有冲突,反编译重命名服从用户手动重命名,如果是反编译重命名了但用户也手动重命名,不论先后,以用户手动重命名的名称为准,只显示用户手动重命名的名称。
(7)、编辑—>上一步、下一步
《1》、上一步:跳转到前一步。
《2》、下一步:跳转到后一步。
(8)、编辑—>字体
可以调整字体大小。
上面的所有设置都必须重启程序。否则可能出现错误。
2、 快捷键
《1》、CTRL + O:打开文件。
《2》、CTRL + S:保存从命名数据。
《3》、ALT +左箭头:上一步。
《4》、ALT +右箭头:下一步。
《5》、CTRL + F:弹出搜索对话框,只能单个单词搜索。
《6》、N:从命名单击过的类、方法、属性、本地变量。
《7》、TAB:切换反编译选项卡。
《8》、ESC:关闭重命名或搜索对话框。
由于作者技术比较菜,软件界面做得丑,且反编译时某些方法还有一定的问题,以后再慢慢更新修复。用手机真不怎么会编辑文章,文字又多又啰嗦,估计阅读者看见都烦了。
四、软件下载地址
https://www.luyonghu.com/JDAServer/jda.zip
下面是软件截图: