Java反编译工具JD-GUI、procyon-decompiler、luyten、crf简介

createh51周前 (12-22)技术教程10

本文对常用的反编译工具进行简单介绍

JD-GUI、procyon-decompiler、luyten、crf

反编译工具分类

JD-GUI

JDK7以及之前可以使用 JD-GUI,如果版本>=1.8 各种问题

http://java-decompiler.github.io

procyon-decompiler

如果版本>=1.8 ,可以使用 procyon-decompiler,不过是命令行界面

https://bitbucket.org/mstrobel/procyon/downloads/

luyten

luyten是Procyon的GUI,只需要下载luyten即可,不用下载Procyon

https://github.com/deathmarine/Luyten

下载地址

https://github.com/deathmarine/Luyten/releases

crf

crf也可以支持更高版本

http://www.benf.org/other/cfr/

小结

如果你的版本<=7,都可以使用,如果版本更高,请使用除了JD-GUI以外的选择

使用

JD-GUI

略,JD-GUI网上教程很多,不再介绍。

procyon-decompiler

可以直接解析class文件到cmd窗口显示

也可以将反编译之后的文件保存到指定位置,如果需要保存在指定位置,需要增加 -o命令参数,并且需要指定保存的路径

直接显示:

java -jar D:\ApplicationFiles\program\procyon-decompiler-0.5.30.jar D:\ProgramData\ideaProjects\...\news\NewsController.class

保存文件:

java -jar D:\ApplicationFiles\program\procyon-decompiler-0.5.30.jar D:\ProgramData\ideaProjects\...\news\NewsController.class -o C:\Users\noteless\Desktop\dddddd

luyten

luyten是图形化界面

通过File直接打开class文件即可

当然,也可以进行文件保存等操作

注意

直接打开luyten的时候,给出了下面的提示信息

但是,系统中的java环境是没有问题的,也是一直在使用的,CMD下运行java或者javac命令都没有问题

这是为什么?

据网上分析是因为使用了免安装版本的JDK,简单说不是从官网下载可执行程序一步一步安装而来

这也就导致了注册表中不存在JDK的信息

一种变通的途径就是借助于命令,通过在命令提示符下面输入 java -jar .\luyten-0.5.4.exe打开

(此时,我的文件存在于桌面上,所以使用的当前路径)

如果设置到其他位置,请给出路径,比如

也可以进一步设置为bat命令

文件就一行内容:

java -jar D:\ApplicationFiles\program\luyten-0.5.4.exe

再进一步可以创建一个快捷方式,使用下文的方式,就可以直接使用WIN键+R打开

https://www.cnblogs.com/noteless/p/10471005.html

另一种方法,就是手动设置注册表

还有一种方法是重新安装JDK,走一遍过程

建议通过命令java -jar就好了,改注册表后续出现什么奇怪问题,自己可能都忘记了是自己改出来的

重新安装麻烦费事

CFR

http://www.benf.org/other/cfr/

CFR更新还是蛮及时的

它的使用,与procyon-decompiler没有区别

可以直接反编译呈现在CMD中,也可以输出到文件中

直接解析:

C:\Users\noteless>java -jar D:\ApplicationFiles\program\cfr-0.141.jar C:\Users\noteless\Desktop\NewsController.class

输出文件:

java -jar D:\ApplicationFiles\program\cfr-0.141.jar C:\Users\noteless\Desktop\NewsController.class --outputdir C:\Users\noteless\Desktop\xxx

文章来源:https://www.cnblogs.com/noteless/p/10592362.html

相关文章

Java 编译速度有多快? java的编译

在 Java 开发中,编译速度一直是程序员关注的一个重要问题。虽然 Java 编译器(javac)本身的编译速度相对较快,但当我们引入构建工具(如 Maven、Gradle 或 Mill)后,编译速度...

Java 代码编译的3种方式,其中JIT最重要!

通过 Javac 将程序源代码进行编译,转换成 Java 字节码,JVM 通过模板方式把字节码翻译成对应的机器指令,逐条读入,逐条解释翻译,执行速度必然比可执行的二进制字节码程序慢得多。为了提高执行速...

深入理解Java虚拟机之自己编译JDK

题外话最近在阅读《深入理解Java虚拟机》,其中有一小节实战是自己编译JDK,实际操作下来后遇到问题不少,为此特地记录,也希望可以给大家带来一些参考!前置准备平台及工具: Windows 10 + W...

如何编写优雅的 Java 代码 如何写出优雅的java代码

不知道各位在项目开发过程中有没有过这种体会,接手上一任的代码,看到代码的那一刻,有一种想要砸电脑的冲动,一个方法体内写了无数行代码,到处皆可看到复制粘贴的代码,变量命名也让人看不懂。各位在编码时,是否...

树莓派运行和编译Java程序,详细步骤安装JDK

在本指南中,详细记录了如何为树莓派安装Jdk,java的开发编译环境,运行java程序。Java是一门流行且功能强大的编程语言,用途广泛。流行的游戏Minecraft就是用Java语言构建的。在本教程...

Java 反编译工具的使用与对比分析

前言Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字节...