« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9701236 建立时间:2004年12月20日 |

| |
[jvm]JAD的使用  原创空间, 软件技术, 电脑与网络
邢红瑞 发表于 2006/12/23 12:21:01 |
我以前用Decafe 但是由于JDK升为5.0后,Decafe反编译不了5.0的class,小颖JAVA源代码反编译专家V1.4终极版是个很好的工具,但是只能对JDK1.4.2和之前的版本编译的程序反编译,而JDK5.0后的就无能为力了,因为也是使用jad,因为jad从1.5.6版后,严禁用于商业版,也就是说你的产品中,没有Pavel Kouznetsov的同意,是不能使用jad的。不过新版的jad 不但速度快,而且可以反编译5.0 6.0的class文件。我说的反编译不用于破解商业版的软件,主要是找回自己丢失的代码,或者研究JDK编译器的优化,反编译的程序一般比我写的精练,因为一段可以工作的代码就是最好的参考文档。jad是一个基于命令行的程序,提供了大量的命令行选项。在命令行窗口环境中进入jad目录, 运行:jad -s java *.class (*.class指要反编译的文件名) 如果*.class文件和jad程序不在同一个目录,就要用到path环境变量, 将jad 所在目录加到path路径中即可:set path=%path%;d:\java\jad 若要了解jad更为详细的使用帮助信息,直接运行jad.exe查看主要说几个重要的:-8: 把Unicode编码的字符转换成ASCII输出,这样程序中的中文就会原样输出,而不是令人费解的uxxxx这种形式-nl: 把字符串按照切分输出,这样很长的字符串也不至于都放在一行,增强了可读性。-ff: 把数据成员放在方法之前,这样就符合大家写程序的习惯了-space: 在if, while等关键字和表达式之间加入空格,这是java的良好编程风格-nonlb: 不在开大括号(也就是左大括号)前加回车,这是大部分java程序员的习惯风格,大家可以根据自己的习惯选用-sjava 反编译结果以.java为扩展名,不是默认的jad。一般用jad -ff -nl -space -8 -nonlb -s .java *.class基本用法 Option -o 不提示,覆盖源文件 Option -p 将反编译结果输出到屏幕 jad -p example1.class 将反编译结果重定向到文件 jad -p example1.class>example1.java Option -d 指定反编译的输出文件目录 jad -o -dtest -sjava *.classOption -r 按*.class的包结构输出文件目录 jad -o -r -dtest -sjava d:/crackomincore/**/*.class 将d:\crackomincore\文件夹下的.class文件按照原程序的包结构反编译到test目录下直接使用命令行反编译整个目录的方法:使用jad批量反编译jad -o -r -sjava -d src bin/**/*.classsrc: 是反编译后的文件bin:指 package的字节文件将bin里面所有的.class反编译到src下面 |
|
|