前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

谈谈JAVA程序的反编译_Java实例_电脑学习网(Xue5.CoM) 您现在的位置: 学网 >> 程序开发 >> Java >> Java实例 >> 正文 【Java实例】 Java实例:谈谈JAVA程序的反编译 [ 来源:Java | 作者:Java | 时间:2007-7-20 | 去论坛] 谈谈JAVA程序的反编译   如今JAVA语言在全世界范围正如火如荼般的流行,它广范地应用在INTERNET的数据库、多媒体、CGI、及动态网页的制作方面。1999年在美国对JAVA程序员的需求量首次超过C++!  最近分析一些JAVA程序,对JAVA的反编译进行了一番了解,下面将我所了解的情况作以下介绍,希望对JAVA爱好者有所帮助。  JAVA是采用一种称做“字节编码”的程序结构,分为小程序(嵌入到HTML文件中)和应用程序(直接在命令状态下执行)两种类型。无论哪种结构,一旦用JAVAC 命令编译后,均变成后缀为CLASS的同名可执行文件。这种文件是不可阅读的代码。  经查阅了SUN公司的JDK(JDK1.1.3)文档资料后,我找到了一个据称是可反编译JAVA的JAVAP文件(EXE),这个文件位于\JDK\BIN\ 下面,经按说明使用后,感到失望,原来这个“反编译”仅可反编译出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",20,20);  }  }   经用反编译命令: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)  0 aload_1  1 ldc #1   3 bipush 20  5 bipush 20  7 invokevirtual #6   10 return  Method hello_java()  0 aload_0  1 invokespecial #5 ()V>  4 return  }  从上述结果不难看出该反编译未能将源程序全译出来,像语句g.drawString("Hello Java!\n",20,20); 就没有。随着程序量增加,未能编译的JAVA语句还会更多。所以这个反编译程序仅能起个参考作用。  幸亏有了INTERNET,笔者通过YAHOO很快找到了一个JAVA反编译“自由软件”(SHAREWARE),http://www.inter.nl.net/users/H.P.van.Vliet/mocha.htm 。 这个软件叫MOCHA,据说是一位30来岁的加拿大的研究生所完成,仅是个“?”版,原因是这位叫做H.P.VAN.VLIET的小伙子患癌逝世了,十分可惜呀!  经使用MOCHA反编译软件,感到这个软件十分好用,笔者试反编译多个JAVA程序,均得到很好的结果。  这里给出如何使用这个软件,首先,用WINZIP等将"mocha-b1.zip" 解开得到"mocha.zip"文件,"mocha.zip"不须再解开,这个包内包括了反编译的类文件,只需将其拷贝到JDK所在的目录下,如:c:\jdk\bin\ 此外,须设置路径:SET CLASSPATH=c:\myclasses;c:\jdk\bin\mocha.zip  MOCHA用法:  java mocha.Decompiler [-v] [-o] Class1.class Class2.class ...  "java" 调用Java虚拟机   "mocha.Decompiler" 指示要进行JAVA反编译  "-v" 选择详细输出  "-o" 选写入已有的.mocha 文件  "ClassX.class" 指出要反编译类名  注意,不需给出输出的JAVA文件名,因为MOCHA自动产生一个与CLASS同名但扩展名为MOCHA的JAVA源文件。  对于上例,欢迎光临学网,收藏本篇文章 [1] [2] $False$ 可用命令:  java mocha.Decompiler [-v] [-o] hello_java.class  得到的源文件:  /* Decompiled by Mocha from hello_java.class */  /* Originally compiled 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", 20, 20);  }  public hello_java()  {  }  }  我们不难发现,此文件与编译前的JAVA源文件完全一样!笔者曾经用MOCHA反编译出最大为80K的源文件,均取得成功。欢迎光临学网,点击这里查看更多文章教程 [1] [2] 点此进一步了解“谈谈JAVA程序的反编译”相关的更多内容 转载请注明[学网]:http://www.xue5.com 上一篇文章: java 基础数据类型 下一篇文章: java 的jdom使用类 【推荐阅读】 ps过的美女照片用眼能看的出来吗?3Dsmax中 UVW贴图展开的问题求Ps高手:在不改变gif文件的尺寸大小下,把它的容量一张空间图片素材、、、 想知道这男的女的叫什么。。Winamp Pro版进入安卓市场德国联邦信息安全办公室推荐使用Google Chrome不支持多通道内存是什么意思,还有AMD的cpu好还是因3Dsmax怎么改视图背景色 【更多Java实例资料……】 ·Java多线程程序设计·Java Bean 生成器·java中动态执行一段代码·java与c/c++进行socket通信的一些问题(·在java中实现 AutoCAD api·Jawe工作流建模及Shark工作流引擎的实例·java与c/c++进行socket通信的一些问题(·JAVA下的GZIP应用·用Java解决国际化问题·java + (C++) != C#·每个初学JAVA者都应该搞懂的问题·Java & regex(2-3)·C# Inner Class vs. java 的inner clas ps过的美女照片用 3Dsmax中 UVW贴图 求Ps高手:在不改 · 拒绝游泳的鱼谈网站的运营和坚守精神· 3D动画《龙族武士》幕后制作揭秘· PS制作非主流紫色调效果教程· Adobe Photoshop CS4新版惊喜接触· 《木乃伊3:龙帝之墓》制作幕后大揭秘· 熊猫烧香的核心代码· 360安全卫士My123.com病毒内幕· 李彦宏故事七:拍桌子摔手机· 李彦宏故事三:放弃到手的博士学位· 李彦宏故事九:徐勇走了刘建国走了百度· 李彦宏故事四:发明超链分析· 李彦宏故事五:在INFOSEEK位卑言轻 学网·特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。本站所有文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题,请联系编辑人员Xababy#Gmail.com,我们尽快予以更正。 【最新Java实例资料】 ·Java异常处理及异常机制介绍·用Java程序连接各种数据库的方法介绍·一个用JAVA写的画图程序·AJAX实例应用-1(注册时判断用户名是否·插件开发7——Views·插件开发2——简单插件开发示例·插件开发1——Eclipse启动参数·我也来玩Equinox(三)·我也来玩Equinox(二)·Struts 1 学习笔记-3-2(JSTL核心标签库 【返利网】 Autodesk AutoCAD v2009 下载Realtek(瑞昱)系列AC97声音芯片WDM驱动 6酷狗音乐(KuGoo) 2008 Beta v5.105 下载QQ影音的“十八般武器”助你畅游影音世界妙用“Z武器”任务栏进度提示功能有道桌面词典1.2全新体验 小词典引发大革 【PhotoShop经典教程】 Photoshop调出照片的清爽淡绿色彩(1)使用套索工具调出梦幻色彩(1)Photoshop打造经典月色下的美女(1)使用纹理素材和调色工具制作经典怀旧照片Photoshop打造日本卡哇依非主流照片(1)Photoshop制作网络卡通签名效果图(1) 设为首页 - 收藏学网 - 关于学网 - RSS订阅 - 版权申明 - 友情链接 - 联系学网 - 网站地图 - 投稿学网 学网·2003-2011版权所有 © CopyRight 2004-2008 WwW.Xue5.CoM.Inc All Rights Reserved合作、联系E-Mail:cainiaoo.cn#live.cn QQ:1103290,329700200 学网_致力于电脑使用知识、软件操作知识以及互联网应用知识的普及陕ICP备05000834号