知识大全 谈谈JAVA的反编译

Posted 文件

篇首语:人生就像爬坡,要一步一步来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 谈谈JAVA的反编译相关的知识,希望对你有一定的参考价值。

谈谈JAVA的反编译  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  作者因最近分析一些JAVA程序 对JAVA的反编译进行了一番了解 下面将我所了解的情况作以下介绍 希望对JAVA爱好者有所帮助     JAVA是采用一种称做 字节编码 的程序结构 分为小程序(嵌入到HTML文件中)和应用程序(直接在命令状态下执行)两种类型 无论哪种结构 一旦用JAVAC 命令编译后 均变成后缀为CLASS的同名可执行文件 这种文件是不可阅读的代码   经查阅了SUN公司的JDK(JDK )文档资料后 我找到了一个据称是可反编译JAVA的JAVAP文件(EXE) 这个文件位于JDKBIN 下面 经按说明使用后 感到失望 原来这个 反编译 仅可反编译出JAVA程序的数据区(定义) 若干方法和类的引用等     这里我用了一个简单例子来说明问题   JAVA的源程序hello_java java如下     import java applet *;  import java awt *;    public class hello_java extends Applet    public void paint(Graphics g)    g drawString( Hello Java!n );         经用反编译命令 javap c package public private hello_java hello java   得到的反编译结果(hello java)如下 (有关javap命令的选择参数请见其使用说明 这里 c表示选择了反编译)    Compiled from hello_java java  public synchronized class hello_java extends java applet Applet   /* ACC_SUPER bit set */    public void paint(java awt Graphics);  public hello_java();    Method void paint(java awt Graphics)   aload_    ldc #    bipush    bipush    invokevirtual #    return    Method hello_java()   aload_    invokespecial # ()V >   return      从上述结果不难看出该反编译未能将源程序全译出来 像语句g drawString( Hello Java!n ); 就没有 随着程序量增加 未能编译的JAVA语句还会更多 所以这个反编译程序仅能起个参考作用   幸亏有了INTERNET 笔者通过YAHOO很快找到了一个JAVA反编译 自由软件 (SHAREWARE) 这个软件叫MOCHA 据说是一位 来岁的加拿大的研究生所完成 仅是个 ? 版 原因是这位叫做H P VAN VLIET的小伙子患癌逝世了 十分可惜呀!  经使用MOCHA反编译软件 感到这个软件十分好用 笔者试反编译多个JAVA程序 均得到很好的结果   这里给出如何使用这个软件 首先 用WINZIP等将 mocha b zip 解开得到 mocha zip 文件 mocha zip 不须再解开 这个包内包括了反编译的类文件 只需将其拷贝到JDK所在的目录下 如 c:jdkbin 此外 须设置路径 SET CLASSPATH=c:myclasses;c:jdkbinmocha zip  MOCHA用法   java mocha Depiler [ v] [ o] Class class Class class    java 调用Java虚拟机    mocha Depiler 指示要进行JAVA反编译   v 选择详细输出   o 选写入已有的 mocha 文件   ClassX class 指出要反编译类名  注意 不需给出输出的JAVA文件名 因为MOCHA自动产生一个与CLASS同名但扩展名为MOCHA的JAVA源文件   对于上例 可用命令   java mocha Depiler [ v] [ o] hello_java class  得到的源文件   /* Depiled by Mocha from hello_java class */  /* Originally piled from hello_java java */    import java applet Applet;  import java awt Graphics;    public synchronized class hello_java extends Applet    public void paint(Graphics g)    g drawString( Hello Java!n );      public hello_java()        我们不难发现 此文件与编译前的JAVA源文件完全一样!笔者曾经用MOCHA反编译出最大为 K的源文件 均取得成功   在此 笔者向英年早逝的VLIET表示敬意 感谢他给我们留下这个工具软件   如读者下载MOCHA有困难 可给笔者来电子邮件 笔者可将MOCHA寄去     参考文献    )    )    )    ) cha138/Article/program/Java/Javascript/201311/25331

相关参考

知识大全 研究Java的反编译性

研究Java的反编译性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nb

知识大全 javap(反汇编命令)详解

  javap是JDK自带的反汇编器可以查看java编译器为我们生成的字节码通过它我们可以对照源代码和字节码从而了解很多编译器内部的工作语法  javap[命令选项]class  javap命令用于解

知识大全 Java 相关的编译技术

Java相关的编译技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  除了Java的编译器和虚拟

知识大全 Java混淆编译器

Java混淆编译器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    最近试用了几个Java混淆

知识大全 如何用javac 和java 编译运行整个Java工程

如何用javac和java编译运行整个Java工程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 从思路开始 Java如何实现条件编译

从思路开始Java如何实现条件编译  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  条件编译绝对是

知识大全 使用Ant编译Java工程[4]

使用Ant编译Java工程[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!projectget

知识大全 使用Ant编译Java工程[5]

使用Ant编译Java工程[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Pathlike

知识大全 使用Ant编译Java工程[2]

使用Ant编译Java工程[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  例子  ant 

知识大全 使用Ant编译Java工程[3]

使用Ant编译Java工程[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果(或如果不)