一款高度还原java的开源独立反编译器---具有图形化界面
官网:http://java-decompiler.github.io/
第一印象
logo:
软件截图:
网站截图
相关介绍
下载:官网直接下载,注意有蔷。https://github.com/java-decompiler/jd-gui/releases、https://github.com/java-decompiler/jd-core、
https://github.com/java-decompiler/jd-eclipse/releases
存储库:github(https://github.com/java-decompiler)
版本:JD-Core,JD-GUI、JD-Eclipse,windows、linux、osx
JD-GUI是一个独立的图形实用程序,显示“ .class”文件的Java源代码。您可以使用JD-GUI浏览重建的源代码,以立即访问方法和字段。
JD-Eclipse是Eclipse平台的插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部源代码也是如此。
JD-Core是一个“ .class”文件重构Java源代码的库文件。JD-Core可用于恢复丢失的源代码并探究Java运行时库的源码。支持Java 5的新功能,例如注释,泛型或“枚举”类 型。JD-GUI和JD-Eclipse都包含JD-Core库。
版本日期:1.6.6(2019.12.25)
编写语言:java
兼容性:优,与当前绝大多数编译器兼容,其中包括:
- JDK 1.1.8, JDK 1.3.1, JDK 1.4.2, JDK 1.5.0, JDK 1.6.0, JDK 1.7.0, JDK 1.8.0, JDK 9.0.1, JDK 10.0.2(Oracle JVM收购自sun的正统)
- jrockit90_150_06(Oracle 优化的JVM)
- jikes-1.22(IDM JAVA)
- harmony-jdk-r533500(apache jdk 已废弃,我怎么突然看到了鸿檬,虽然不是华伟的鸿檬,但是我猜测有可能基于这个JDK开发的,因为安卓早间也是用的Oracle JVM开发的,被Oracle告,被强行收取了一波官司费,不过现在的安卓虽然是基于jdk的但是核心代码没有用Oracle 的,而是自己实现的,除了api接口还是用Oracle 的,其余代码都实现了私有,其实安卓核心来讲就是 改的面目全非的linux+私有JDK+私有驱动程序+在JDK上运行的APK,apk的本质还是java,安卓的核心代码都没有开源,只是开源了开发要用到的东西,没有完全开源的软件我个人认为就是闭源的,为什么安卓基于linux开发的系统却可以不开源,谷鸽很鸡贼,为了避免开源,安卓在linux上自己实现了一套系统调用,这个系统调用就必须开源,这样在linux系统上的软件就不用开源了,因为安卓本质上就不是操作系统,是一个中间层,类似java一样,也正因如此才可以想卡谁的脖子卡谁的脖子。为什么要沿用类java来构建安卓,因为Java起初就是为嵌入式而开发的软件,java生态环境已相当成熟,基于java可以省好多事,安卓只要专注于界面就好了。手机开源操作系统绝对不是安卓一家,随着安卓的不断闭源,将有其他的开源自由手机操作系统随之崛起)
- Eclipse Java Compiler v_677_R32x, 3.2.1 release
文档:无
源作者:Emmanuel Dupuy
开源 是
版权 GPLv3
盈利方式:捐赠
优点:jd-gui的最强大的地方就是引擎jd-core十分强劲,准确且快。在遇到错误时会注释汇编代码的形式展示错误内容。还有一个较为直观的界面,用java开发具有了跨平台特 性,主流操作系统都可以使用。
缺点:功能较为单一,只能反编译后查看源码内容
快速上手
jd-gui支持的格式有aar、class、ear、jar、java、jmod、log、war、zip、kar
JD-GUI的安装方式
免安装,要先装好java环境
JD-Eclipse的安装方式
- 下载JD-Eclipse ZIP文件,
- 启动Eclipse,
- 点击“帮助>安装新软件...”,
- 在对话框窗口中拖放ZIP文件,
- 选中“ Java Decompiler Eclipse插件”,
- 点击“下一步”和“完成”按钮,
- 由于未签名“ org.jd.ide.eclipse.plugin_x.yzjar”,因此出现警告对话框。单击“仍然安装”按钮。
使用方法
JD-GUI程序双击执行或命令行执行 "java -jar jd-gui-x.y.z.jar" 或 "java -classpath jd-gui-x.y.z.jar org.jd.gui.App",前提是系统要装有java环境。直接打开目标文件或拖放。使用非常直观,代码中的下划线就是交叉引用的下文,就是被调用者的地方。删除所有文件即可卸载
详细讲解
如何源码构建JD-GUI?
> git clone https://github.com/java-decompiler/jd-gui.git > cd jd-gui > ./gradlew build
生成文件到:
- "build/libs/jd-gui-x.y.z.jar"
- "build/libs/jd-gui-x.y.z-min.jar"
- "build/distributions/jd-gui-windows-x.y.z.zip"
- "build/distributions/jd-gui-osx-x.y.z.tar"
- "build/distributions/jd-gui-x.y.z.deb"
- "build/distributions/jd-gui-x.y.z.rpm"
如何扩展JD-GUI插件?
> ./gradlew idea
生成Idea Intellij项目
> ./gradlew eclipse
生成Eclipse项目
> java -classpath jd-gui-x.y.z.jar;myextension1.jar;myextension2.jar org.jd.gui.App
使用您的扩展程序启动JD-GUI
扩展阅读
衡量一个反编译查看器是否优秀的唯一标准就是反编译 引擎/内核/核心 能否高度还原出源码(以后统一叫引擎)。其次支持的二进制文件格式是不是够多、支持大文件、多引擎支持、是否跨平台、有没有图形界面、是否直观易读(语法高亮、目录层级显示、显示调试信息比如代码行或源文件名、注解等等)、是否具有一定容错性(不要反编译一半就挂了)、是否开源、有没有交叉引用(调用者和被调用者)、强大的搜索功能、是否可编辑(目前的反编译器都不可编辑,不能直接编辑源码或二进制代码),有没有调试功能、是否具有可扩展性(比如添加自己的反编译支持格式等)。
什么是编译、链接、执行、
百毒知道
什么是反编译器和反汇编器
百毒知道
什么是调试器和反调试
百毒知道
什么静态分析和动态调试
百毒知道
什么是反调试和反反编译和加固和加壳和混淆
反调试就是阻碍调试进程的内容,加固指定的就包含反调试、反反编译、加密字符串等一切阻碍反编译进行的技术。加壳就加固的一种快速方法,可以瞬间保护可执行代码无需提供源码。混淆也是一种加固方法,指的是将字符串加密、函数名随机化、函数结构扁平化的初步加固处理。
什么调试信息和代码行
在编译完成后会存留有多余代码,方便调试使用。其中有个信息是代码行,它反映了这行代码在源码中的大致位置。
什么GUI和CLI
百毒知道
什么独立软件
独立软件就是不依赖任何第三方软件的软件,包括核心和GUI
常见的反编译器有哪些?
JD-Core 、CFR、Dava、FernFlower、JaDx、Jode、Krakatau、Procyon
什么是java、jdk、jre、字节码?
百毒知道