/*jadclipse*/Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov (kpdus@yahoo.com).
Usage: jad [option(s)] <filename(s)>
Options: -a - generate JVM instructions as comments (annotate)
-af - output fully qualified names when annotating
-b - generate redundant braces (braces)
-clear - clear all prefixes, including the default ones
-d <dir> - directory for output files
-dead - try to decompile dead parts of code (if there are any)
-dis - disassembler only (disassembler)
-f - generate fully qualified names (fullnames)
-ff - output fields before methods (fieldsfirst)
-i - print default initializers for fields (definits)
-l<num> - split strings into pieces of max <num> chars (splitstr)
-lnc - output original line numbers as comments (lnc)
-nl - split strings on newline characters (splitstr)
-noconv - don't convert Java identifiers into valid ones (noconv)
-nocast - don't generate auxiliary casts
-nocode - don't generate the source code for methods
-noctor - suppress the empty constructors
-nodos - turn off check for class files written in DOS mode
-noinner - turn off the support of inner classes
-nolvt - ignore Local Variable Table entries (nolvt)
-nonlb - don't insert a newline before opening brace (nonlb)
-o - overwrite output files without confirmation
-p - send all output to STDOUT (for piping)
-pa <pfx>- prefix for all packages in generated source files
-pc <pfx>- prefix for classes with numerical names (default: _cls)
-pe <pfx>- prefix for unused exception names (default: _ex)
-pf <pfx>- prefix for fields with numerical names (default: _fld)
-pi<num> - pack imports into one line using .* (packimports)
-pl <pfx>- prefix for locals with numerical names (default: _lcl)
-pm <pfx>- prefix for methods with numerical names (default: _mth)
-pp <pfx>- prefix for method parms with numerical names (default:_prm)
-pv<num> - pack fields with the same types into one line (packfields)
-r - restore package directory structure
-s <ext> - output file extension (default: .jad)
-space - output space between keyword (if, while, etc) and expression
-stat - show the total number of processed classes/methods/fields
-t<num> - use <num> spaces for indentation (default: 4)
-t - use tabs instead of spaces for indentation
-v - show method names while decompiling
首先,看一下jad的帮助提示 -a - 用JVM字节格式来注解输出 jad -o -r -sjava -dsrc test.class tree目录下的所有*.class文件 unix可以表示为:jad -o -r -sjava -dsrc 'tree/**/*.class' 指定输出文件的名字的话,用以下的转移命令 jad -p example1.class > myexm1.java |
java反编译工具jad 1.5.8g支持 jdk1.5,jdk1.6。
说明很多:记住一个万能的命令基本就够用了。jad -sjava -r -8 -o **\*.class
Jad的部分用法:
以下假设jad.exe在c:\java目录下
一、基本用法
Usage:jad [option(s)]
直接输入类文件名,且支持通配符,如下所示。
c:\Java\>jad example1.class
c:\Java\>jad *.class
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.Java即得源文件。
二、用命令行反编译整个目录的方法:使用jad批量反编译
jad -o -r -sjava -d src bin/**/*.class
说明:src: 是反编译后的目录;bin:指 package 目录
将bin里面所有的.class反编译到src下面
部分参数详解:
一、Option -o 不提示,覆盖源文件
二、Option -s 指定反编译结果的扩展名(默认为: .jad)。
c:\java\>jad -sjava example1.class 反编译结果以.java为扩展名。
三、Option -p 将反编译结果输出到屏幕 c:\java\>jad -p example1.class
将反编译结果重定向到文件 c:\java\>jad -p example1.class>example1.java
四、Option -d 指定反编译的输出文件目录(用于指定输出文件的目录-java文件)
c:\java\>jad -o -dtest -sjava *.class
五、Option -r 按*.class的包结构输出文件目录
c:\java\>jad -o -r -dtest -sjava d:/1/**/*.class
将d:\1\文件夹下的.class文件按照原程序的包结构反编译到test目录下。
六、Option -8 将Unicode字符转换为ANSI字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示。
示例:Jad –d c:\\javasource –s .java -8 javatest.class
这条指令将当前目录下的javatest.class反编译为javatest.java并保存在c:\\javasource目录里,其中的提示输出为中文,而不是Unicode代码。