晓莲说-何不原创:如何通过jad把class批量反编译成java文件
背景:前几天在项目开发的时候遇到一个问题,那就是利用myeclipse编写好的一个项目打包成jar包后上传部署到服务器里,之后本地的项目被自己改来改去出现了一些问题,想着把上传到服务器里面的war包下载下来重新利用,大家都知道,war包里面的内容解压下来后java文件已经被编译成class文件了,期初用的是一款名为“jd-gui”的工具来反编译,这个很方便,不过缺点是只能一个一个的进行编译,很费时间,不能批处理。于是经过度娘与自己的摸索,利用jad完全可以做到(上面不重要,下面才是重点)。
Jd_gui网盘下载地址:http://pan.baidu.com/s/1skSxgDn(不想批处理的可以直接下载这个)
点击文件(file)中的save Source保存即可

Jad官网下载地址:http://www.varaneckas.com/jad(按照自己的电脑系统下载)
我用的是windows,如下图:

Java jad下载下来解压后有两个文件,一个exe文件和一个帮助文件,为了方便使用,我直接将exe文件放到JDK的bin目录里,这样做是为了能够执行exe文件(不用再环境变量里面配置),至于如何配置,我会在下一篇文章进行介绍。
放在jdkde bin目录后,我们打开cmd(快捷键:windows+R,输入cmd):

点击确定即可。
然后在里面输入:jad.exe -r -d c:\src -s java -8 classes/**/*.class
其中-r 表示恢复源文件的目录结构,,-ff 表示将类属性定义放在类方法定义之前, -d 表示输出目录,-s 表示文件的扩展名 ,-8表示防止乱码问题。
然后回车,你会发现一个很奇怪的现象,

表示找不到指定的文件,这肯定是这样的嘛,因为你电脑上面的c盘子文件下又没有src这个文件,而且也没有对应目录需要执行的classes文件,所以会报错,很正常的啦。
举个例子,首先得在c盘的目录下创建一个src(可以自定义,不过为了方便我们以放在C盘为例),

然后在根目录下(就是与src同目录)把需要反编译的classes文件拷贝过来(包括所有子文件)。

这个classes就是我们想反编译的所有class文件,然后再执行这条语句,你会发现一大串英文。类似这样的。

这就代表编译成功,然后就可以在src里面看到class已经编译成java然后保存到相应的文件夹里面了


希望对你能有帮助。
晓莲说-何不原创:如何通过jad把class批量反编译成java文件的更多相关文章
- 晓莲说-何不原创:java 实现二维数组冒泡排序
新手从业路-为自己回顾知识的同时,也希望和大家分享经验: 话不多说,上代码 public class 冒泡排序 { /** * @param admin * @2017.12.4 ...
- jad批量反编译class和jadeclipse集成到eclipse的设置方法
安装jad配置 1.从http://varaneckas.com/jad/下载windows版本的jad.exe 2.安装完毕后配置jad的系统环境变量 批量解压jar和class文件 1.使用7zi ...
- 【原创】Java批量反编译利器(jd-gui)介绍
Java反编译利器(jd-gui)介绍 当要做白盒测试或安全测试时,我们需要借助工具扫描被测代码,相信大家都遇到过没有源代码,而需要反编译的情形吧,也可能大家用过jad工具,我这里介绍下方便的工具jd ...
- Eclipse下jad反编译之“类文件查看器”不能处理给定的输入错误解决
Eclipse中的插件下载,安装和配置可以参考我的另一篇文章:MyEclipse反编译Class文件 下面重点讲解如何使用jad反编译 1.在DOS窗口中,到class所在目录,直接运行 >ja ...
- jad的用法(反编译某目录下所有class)
jad -s java -d E:\scm\MonitorServerEx\src2 -o -ff -r E:\scm\MonitorServerEx\classes-recomp\**\*.clas ...
- Java反编译工具Jad详解
做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...
- 反编译软件jad
http://blog.csdn.net/small____fish/article/details/7687261 这是原网址,挺全的. 官网上下载jad,再把jad.exe 复制到javahome ...
- jad 反编译java
1 安装 解压jad.zip文件到任何的目录.将会创建两个文件,一个是jad.exe另一个是readme文 件,不需要任何别安装2 如何使用jad 如果我们有一个单独的java文件example1.c ...
- JAD 反编译
自动拆装箱 对于基本类型和包装类型之间的转换,通过xxxValue()和valueOf()两个方法完成自动拆装箱,使用jad进行反编译可以看到该过程: public class Demo { publ ...
随机推荐
- word2vec 数学原理
word2vec 是 Google 于 2013 年推出的一个用于获取词向量的开源工具包.我们在项目中多次使用到它,但囿于时间关系,一直没仔细探究其背后的原理. 网络上 <word2vec 中的 ...
- HTTP 错误 500.19 Internal Server Error的解决方法
第一种可能,能解决一部分问题 http://wenku.baidu.com/view/c5cb4a08bb68a98271fefa3f.html 第二种可能,解决另外一部分问题 经过检查发现是由于先安 ...
- json解析eval()中文乱码问题的解决
只需要后台post请求中添加: resp.setContentType("text/html;charset=utf-8"); req.setCharacterEncoding(& ...
- LeetCode 287. Find the Duplicate Number (找到重复的数字)
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ...
- LeetCode 90. Subsets II (子集合之二)
Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...
- go 代码的调试---打印调用堆栈
本文介绍如何打印调用堆栈进行go代码的调试. 打印堆栈使用的runtime package中的Stack()函数 func Stack(buf []byte, all bool) int Stack ...
- TensorFlow Object Detection API(Windows下测试)
"Speed/accuracy trade-offs for modern convolutional object detectors." Huang J, Rathod V, ...
- java时间格式
Calendar startdate = Calendar.getInstance(); startdate.setTime(new Date()); //当前时间 startdate.add(Cal ...
- enum(枚举类型)
可以使用枚举类型声明代表整数常量的符号名称. 通过enum,创建一个新类型,并指定它可以拥有的值.(就像平常用一个整形变量,我们指定它等于0的时候代表什么,1呢,2呢...而通过枚举,就增加了程序的可 ...
- linux学习(八)chmod、chown、umask、lsattr、chattr
一.权限位 权限位分为两个部分,第一个部分是谁的权限,第二部分是权限是多少.其中第一个部分一般分为:用户,用户组,其他用户.第二部分分为r:读权限,w:写权限,x:执行权限.可读,可写,可执行的权限, ...