`
mutongwu
  • 浏览: 449963 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

反编译工具 jad简单使用

    博客分类:
  • Java
阅读更多
/*通常人们习惯把jad放到 jdk安装目录的bin下面(显然classpath中包含了该路径),这样就可以在命令行窗口直接使用jad命令了。
*/
//示例:
/**
把名字叫xxx.class 反成xxx.java,放到与xxx.class的package定义一样的目录里面去。
xxx.class 可以使用通配符,例如 *.class, My*.class ... 
*/

jad -t -r -dead -sjava xxx.class
/*
   如果要反编译jar包,则需要先解压
*/
//-------1.先把jar包解压.使用jar -h 可以查看jar其它的命令参数
jar -xvf demo.jar  -C targetDir

//-------2. 执行反编译
jad -r -t -sjava targetDir/**/*.class


To decompile a single JAVA class file 'example1.class'
type the following:


     jad example1.class


This command creates file 'example1.jad' in the current directory.
If such file already exists Jad asks whether you want to overwrite it or not.
Option -o permits overwriting without a confirmation.

You can omit .class extension and/or use wildcards in the names of
input files.

Option -s <ext> allows to change output file extension:


     jad -sjava example1.class


This command creates file 'example1.java'. Be careful when using
options -o and -sjava together, because Jad can accidentally overwrite
your own source files.

Jad uses JAVA class name as an output file name. For example, if class
file 'example1.class' contains JAVA class 'test1' then Jad will create
file 'test1.jad' rather than 'example1.jad'. If you want to specify
your own output file name use the output redirection:


   jad -p example1.class > myexm1.java


Option -d allows you to specify another directory for output files,
which are created, by default, in the current directory. For example:


   jad -o -dtest -sjava *.class

   (or jad -o -d test -s java *.class, which has the same effect)


This command decompiles all .class files in the current directory
and places all output files with extension .java into directory 'test'.

If you want to decompile the whole tree of JAVA classes,
use the following command:


   jad -o -r -sjava -dsrc tree/**/*.class
   jad -o -r -sjava -dsrc_o classes_o/**/*.class
   jad -o -r -sjava -dcom_src com/**/*.class
   jad -o -r -sjava -djavax_src javax/**/*.class


This command decompiles all .class files located in all
subdirectories of 'tree' and creates output files in subdirectories
of 'src' according to package names of classes. For example, if file
'tree/a/b/c.class' contains class 'c' from package 'a.b', then
output file will have a name 'src/a/b/c.java'.

Note the use of the "two stars" wildcard ('**') in the previous
command. It is handled by Jad rather than the command shell, so on
UNIX the last argument should be single-quoted:


   jad -o -r -sjava -dsrc 'tree/**/*.class'


In a case you want to check the accuracy of the decompilation or just
curious, there is an option -a which tells Jad to annotate the output
with JAVA Virtual Machine bytecodes.

Jad supports the inner and anonymous classes.
When Jad expands wildcards in the input file names,
it automatically skips matching inner classes.
On UNIX Jad skips inner classes if there is more than
one class specified in the command line.
Jad looks for inner classes in the directory of their top-level
container class.

3. List of the command-line options.

Jad accepts the following options:


   -a       - annotate the output with JVM bytecodes (default: off)
   -af      - same as -a, but output fully qualified names when annotating
   -clear   - clear all prefixes, including the default ones (can be abbreviated as -cl)
   -b       - output redundant braces (e.g., if(a) { b(); }, default: off)
   -d <dir> - directory for output files (will be created when necessary)
   -dead    - try to decompile dead parts of code (if any) (default: off)
   -disass  - disassemble method bytecodes (no JAVA source generated)
   -f       - output fully qualified names for classes/fields/methods (default: off)
   -ff      - output class fields before methods (default: after methods)
   -i       - output default initializers for all non-final fields
   -l<num>  - split strings into pieces of maximum <num> chars (default: off)
   -lnc     - annotate the output with line numbers (default: off)
   -lradix<num> - display long integers using the specified radix (8, 10 or 16)
   -nl      - split strings on newline character (default: off)
   -nocast  - don't generate auxiliary casts
   -nocode  - don't generate the source code for methods
   -noconv  - don't convert Java identifiers (default: convert)
   -noctor  - suppress the empty constructors
   -nodos   - do not check for class files written in DOS mode (CR before NL, default: check)
   -nofd    - don't disambiguate fields with the same names by adding signatures to their names (default: do)
   -noinner - turn off the support of inner classes (default: on)
   -nolvt   - ignore Local Variable Table information
   -nonlb   - don't output a newline before opening brace (default: do)
   -o       - overwrite output files without confirmation (default: off)
   -p       - send decompiled code to STDOUT (e.g., for piping)
   -pi<num> - pack imports into one line after <num> imports (default: 3)
   -pv<num> - pack fields with identical types into one line (default: off)
   -pa <pfx>- prefix for all packages in generated source files
   -pc <pfx>- prefix for classes with numerical names (default: _cls)
   -pf <pfx>- prefix for fields with numerical names (default: _fld)
   -pe <pfx>- prefix for unused exception names (default: _ex)
   -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)
   -r       - restore package directory structrure
   -radix<num> - display integers using the specified radix (8, 10 or 16)
   -s <ext> - output file extension (by default '.jad')
   -safe    - generate additional casts to disambiguate methods/fields (default: off)
   -space   - output space between keyword (if/for/while/etc) and expression (default: off)
   -stat    - display the total number of processed classes/methods/fields
   -t       - use tabs instead of spaces for indentation
   -t<num>  - use <num> spaces for indentation (default: 4)
   -v       - display method names being decompiled
   -8       - convert UNICODE strings into 8-bit strings
              using the current ANSI code page (Win32 only)
   -&       - redirect STDERR to STDOUT (Win32 only)


All single-word options have three formats:


  -o    - 'reverses' value of an option
  -o+   - set value to 'true' or 'on'
  -o-   - set value to 'false' or 'off'


You can specify the options you want to be set by default in the environment variable
JAD_OPTIONS. For example:

JAD_OPTIONS=-ff+ -nonlb+ -t+ -space+

Copied fromjad jadReadme.txt, modified a little for readbilities.
分享到:
评论

相关推荐

    java反编译工具 jad

    反编译工具jad简单用法 jad 是应用最广泛的java 反编译工具;其本身是命令行工具;其他很多用具是在jad内核的基础上加了一个图形界面;比如我上传的资源、Cavaj Java Decompiler  以下假设jad.exe在c:\java目录下 ...

    JAVA反编译工具JAD

    JAVA 反编译工具 JAD JAVA 反编译工具 JAD 是一种功能强大的反编译工具,能够将 Java 字节码文件(.class)转换回原始的 Java 源代码(.java)。本文将详细介绍 JAD 的基本用法、Option 选项、输出文件目录等方面的...

    反编译工具jad 反编译工具jad简单用法

    反编译工具jad简单用法 以下假设jad.exe在c:\java目录下 一、基本用法 Usage: jad [option(s)] (s)&gt; 直接输入类文件名,且支持通配符,如下所示。 c:\java\&gt;jad example1.class c:\java\&gt;jad *.class 结果是...

    Java批量反编译工具Jad

    Java批量反编译工具Jad是一款专为Java开发者设计的实用工具,主要用于将已编译的Java字节码(.class文件)转换回源代码(.java文件)。这对于理解已有的二进制库、调试、学习或者逆向工程等场景非常有用。在本文中,...

    Jad(java反编译工具)

    Java反编译工具Jad是Java开发者在遇到无法获取源代码的情况下,用于将已编译的.class文件转换回.java源代码文件的重要工具。这个过程被称为反编译,它可以帮助我们理解二进制类文件的工作原理,或者恢复丢失的源代码...

    jad反编译工具的使用

    ** Jad 反编译工具详解** jad 是一款经典的Java字节码反编译工具,它能够将已编译的.class文件转换回可读性较高的Java源代码。jad v1.5.8f 是一个较早但仍然广泛使用的版本,对于理解和分析Java程序的内部结构非常...

    java jad 反编译工具 jad1.5.8g

    这种灵活性使得Jad不仅仅是一个简单的反编译工具,还是一种强大的代码分析和研究工具。 在实际使用中,Jad 可以与IDE(如Eclipse或IntelliJ IDEA)集成,通过插件形式提供更方便的操作。这些插件通常会提供图形化...

    java反编译工具jad

    Java反编译工具JAD是Java开发者和...总之,Java反编译工具JAD是Java开发和逆向工程领域中的一个重要工具,它为我们揭示了Java字节码背后的源代码,帮助我们理解和调试代码,但在使用时也应谨慎对待版权和合法性问题。

    反编译工具jad和jadclipse插件

    如果jad成功反编译了目标类,那么Eclipse就会打开一个新的编辑器窗口,显示反编译后的源代码。 值得注意的是,由于反编译的本质是对字节码的逆向工程,因此反编译的结果可能并不完全等同于原始源代码。变量名、方法...

    反编译工具jad简单用法

    ### 反编译工具jad简单用法 #### 一、简介 JAD是一款非常流行的Java反编译工具,能够将Java字节码(.class文件)转换回接近原代码的源代码形式。它不仅可以帮助开发者更好地理解和调试代码,还能够在源代码丢失的情况...

    java反编译工具jad 1.5.8g(可以反编译jdk1.5,1.6)

    反编译工具jad简单用法 以下假设jad.exe在c:\java目录下 一、基本用法 Usage: jad [option(s)] (s)&gt; 直接输入类文件名,且支持通配符,如下所示。 c:\java\&gt;jad example1.class c:\java\&gt;jad *.class 结果是...

    经典的java反编译工具 jad

    反编译工具jad简单用法  以下假设jad.exe在c:\java目录下  一、基本用法  Usage: jad [option(s)]  直接输入类文件名,且支持通配符,如下所示。  c:\java\&gt;jad example1.class  c:\java\&gt;jad *....

    class反编译工具jad

    这时候,反编译工具如JAD(Java Decomiler)就显得尤为重要。 JAD是一个流行的Java类反编译器,它能够将Java类文件(.class文件)反编译成Java源代码(.java文件)。这个工具对于那些需要深入了解或修改第三方库...

    java反编译工具绿色版

    本绿色版的Java反编译工具,其特点是无需安装,下载解压后即可使用,节省了系统资源,减少了安装过程可能带来的麻烦。通常这样的工具会包含所有必要的运行库和配置文件,用户只需双击执行文件就能启动,方便快捷。 ...

    java反编译工具-jad

    Java反编译工具JAD是Java开发者在遇到不透明的.class文件时的得力助手,它能够将字节码转换回可读的源代码形式,从而帮助开发者理解或逆向工程现有的Java应用程序。JAD的强大之处在于其支持单个文件和批量反编译功能...

    java 反编译工具 jad和 用法

    Java反编译工具jad是Java开发者在理解和学习他人代码或者逆向工程中不可或缺的利器。jad是由Kruchten Software公司开发的一款开源工具,它能够将Java字节码转换回源代码,尽管转换后的代码可能与原始源代码有所不同...

    java 反编译工具 jad

    Java反编译工具JAD是Java开发者在遇到不带源代码的.class文件时的重要助手。它能够将已编译的Java字节码转换回接近原始的源代码形式,帮助我们理解并分析程序的工作原理,或者在没有源码的情况下进行调试和修改。在...

    jad反编译工具

    Jad是Java开发者在进行逆向工程时常用的工具之一,它能将字节码级别的.class文件转换回源代码级别的.java文件。...然而,使用反编译工具时应尊重版权,遵循合法的使用规定,确保不侵犯他人的知识产权。

Global site tag (gtag.js) - Google Analytics