0049 用jad对class文件进行(批量)反编译【基础】

1 篇文章 0 订阅
1 篇文章 0 订阅

程序反编译就是把经过java文件编译后的可执行的class文件再反编译为java文件,因为经过编译的class文件是不可阅读的!但是由于 java文件一般都不是单独运行的,会有类之间的相互调用,所以反编译工具反编译后只能大体上还原原来java文件,而不能完全还原,特别是一些变量的取值,定义等 反编译的工具有好多,在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:FrontEnd Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和国产的JAVA源代码反编译专家。
SUN公司的JDK(JDK1.1.3)文档,反编译JAVA的JAVAP文件(EXE),这个文件位于\JDK\BIN\下面,可用命令:javap-c -package -public -private hello.java对hello.java文件经编译后的hello.class文件进行编译。
这就决定JAVA文件编译后不是机器码,而是一个字节码文件,也就是CLASS文件。而这样的文件是存在规律的,经过反编译工具是可以还原回来的。
所以,通过jad可以很方便的将.class反编译为.Java
下载jad.exe,放在Java目录下,例如C:\java
一、基本用法 
    jad [option(s)] 
    直接输入类文件名,且支持通配符
二、Option -o 
    不提示,覆盖源文件
三、Option -s 
    反编译结果以.Java为扩展名。
四、Option -p 
    1.将反编译结果输出到屏幕
    2.将反编译结果重定向到文件,例如
      c:\Java\>jad -p example1.class>example1.Java
五、Option -d 
    指定反编译的输出文件目录
六、Option -r 
    按*.class的包结构输出文件目录
七、Option -8 
    把Unicode编码的字符转换成ASCII输出,这样程序中的中文就会原样输出,而不是令人费解的uxxxx这种形式
    以下是一些用法实例,供参考: 
   (假设jad在C:\java下)
一、基本用法 
    jad [option(s)] 
    直接输入类文件名,且支持通配符,如下所示:
    c:\java\>jad example1.class
    c:\java\>jad *.class
    结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源文件。
二、Option -o 
    不提示,覆盖源文件
三、Option -s
    c:\java\>jad -sjava example1.class
    反编译结果以.java为扩展名。
四、Option -p 
    1. 将反编译结果输出到屏幕
       c:\java\>jad -p example1.class
    2. 将反编译结果重定向到文件
       c:\java\>jad -p example1.class>example1.java
五、Option -d 
    指定反编译的输出文件目录
    c:\java\>jad -o -dtest -sjava *.class
六、Option -r 
    按*.class的包结构输出文件目录
    c:\java\>jad -o -r -dtest -sjava d:/1/**/*.class
    结果是将d:\1\文件夹下的.class文件按照原程序的包结构反编译到test目录下。
    在C:\java下有两个文件夹,一个是Class文件夹,用于存放.Class文件;一个是src文件夹,用来存放编译好的源文件。可以在cmd下任意目录位置执行以下命令: 
    c:\>jad -o -r -d c:\java\src -sjava c:\java\class\**\*.class
    以上命令的解释:
            -o :不提示,覆盖源文件  
            -r :按*.class的包结构输出文件目录          
            -d :指定反编译的输出文件目录          
            -sjava :反编译结果以.java为扩展名
    这条命令的作用就是:将c:\java\class\**\*.class中的(两颗接连的星,表示任意层次的子目录。)所有目录下的.Class文件进行反编译,并将其后缀以.java命名(-sjava),按原来的包结构(-r)放到(-d)C:\java\src下

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值