一个Java代码,编译后会生成 A.class B.class C.class等文件(举例子)。但是使用jad命令进行反编译,还原到以前的那个Java代码。好像就有点乱了!只给你.class文件,你如何能完整的写出原代码?对反编译感兴趣的可以发表下看法。
解决方案 »
- 请教mybatis批量插入
- Struts2拦截器fileupload与execAndWait的问题
- cookie中保存用户密码是否安全?
- utf-8 和 gb2312的转换
- 在某个页面提交了Form表单,经过Action处理后我想跳到另一个页面,该怎么做?
- ajax+jsp+mssql2000 中文乱码
- 【100分+急求救!】jsp+mediaplayback控件做一监控页面(用摄像头)????????????
- <form action=''" method=post>action是什么意思?
- 如何用dreamweaver mx和jbuilder 6 结合起来进行jsp的开发?
- 如何取得文本框中的值!!!
- 新手请教
- 登陆成功后,显示欢迎(用户)!
首先,看一下jad的帮助提示-a - 用JVM字节格式来注解输出
-af - 同 -a,但是注解的时候用全名称
-clear - 清除所有的前缀
-b - 输出多于的括号 (e.g., if(a) { b(); }, default: no)
-d <dir> - 指定输出文件的文件目录
-dead -试图反编译代码的dead 部分(default: no)
-disass - 不用用字节码的方式反编译 (no JAVA source generated)
-f - 输出整个的名字,无论是类还是方法
-ff -输出类的成员在方法之前 (default: after methods)
-i - 输出所有的变量的缺省的最初值
-l<num> - 将strings分割成指定数目的块的字符 (default: no)
-lnc - 将输出文件用行号来注解 (default: no)
-nl - 分割strings用新行字符 newline character (default: no)
-nodos -不要去检查class文件是否以dos方式写 (CR before NL, default: check)
-nocast - 不要生成辅助文件
-nocode -不要生成方法的源代码
-noconv - 不要转换java的定义符 (default: do)
-noctor - 不允许空的构造器存在
-noinner -关掉对内部类的支持 (default: turn on)
-nolvt - 忽略局部变量的表信息
-nonlb - 不要输出一个新行在打开一个括号之前 (default: do)
-o - 无需确认直接覆盖输出 (default: no)
-p - 发送反编译代码到标准输出 STDOUT (e.g., for piping) 其次.常用命令jad -o -r -sjava -dsrc test.classtree目录下的所有*.class文件
jad -o -r -sjava -dsrc tree/**/*.class unix可以表示为:jad -o -r -sjava -dsrc 'tree/**/*.class'指定输出文件的名字的话,用以下的转移命令jad -p example1.class > myexm1.java
直接把class拖到界面上就行了
但jvm如果没有对文件进行优化处理呢?反编译处理的属性一般是在方法之前