如何快速反编译一个java项目

前言

这个事情的应用场景是可能进入公司你接手的项目仅仅有jar包或者war包,你想看报错提示或者平台迁移的时候因为看不到代码无法定位问题,git和svn又无法找到源码,那么就需要手动反编译整个项目,这个工程比较庞大而且很浪费时间。
还有就是你获得了一份执行程序,想要逆向分析了解程序是如何实现的,就需要反编译这个项目。
那么如何快速的反编译一个项目呢。
版权声明:本文为CSDN博主「_William_Cheung」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq496013218/article/details/83414813

步骤

工具下载地址:https://varaneckas.com/jad/

这里我们选取jad工具反编译项目。(工具方法很多,避免选择困难我选这一种)
将jad解压后放到%JAVA_HOME%/bin目录下即可,通过命令去执行反编译。
将需要反编译的多个文件放在指定路径下,例如(当前分布式项目都包含多个modules)。为了方便操作,我将文件放在D盘根目录下的classes文件夹中。打开运行—>输入cmd—>输入D:,将路径指到D盘根路径下。
(翻译一下就是d盘根目录建立classes文件夹放.class的文件,再建一个src文件夹放反编译过来的源代码)

输入编译命令,命令:jad -o -r -s java -d src classes/**/*.class

src文件夹里面都是反编译后的java源文件。

jad命令的参数含义如下:
-o:覆盖旧文件,而且不用提示确认。
-r:重新加载生成包结构。
-s (java):定义输出文件的扩展名。jad为默认扩展名,我们反编译后当然是要.java源文件了。
-d:输出文件的目录。src表示反编译后的所有文件都放在src目录下。
classes//*.class:classes是需要反编译的文件夹的名字,整个表示classes目录下的所有class文件。也可以写成这样/*.class,这表示当前目录及其子目录下所有的class文件(包含所有的子目录)。

注意

另外补充几点,一般这种项目都会引用到jar包,将这些引用的jar都反编译显然是没有必要的,反编译的时候就选取那些之前开发自己写的那一部分代码进行反编译即可,自己在开发工具中新建项目,然后把共有jar包自己引入(maven还是导包buildpath)把编译后的源码src文件夹替换空项目的src目录,反编译过程就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章