社区
Java
帖子详情
关于使用jad对class反编译的几个问题
炀大人
2016-08-30 11:41:07
我使用jad来对class进行反编译,发现几个问题:
1,中文编程unicode(这个已经解决了);
2,注释消失(这个应该在生成class的时候就丢弃了);
3,注解消失,这个就真不知道怎么整了,因为有时候看一个controller或其它含注解的,想看看url就变得困难,哪位大神有这种特技,求解
...全文
487
4
打赏
收藏
关于使用jad对class反编译的几个问题
我使用jad来对class进行反编译,发现几个问题: 1,中文编程unicode(这个已经解决了); 2,注释消失(这个应该在生成class的时候就丢弃了); 3,注解消失,这个就真不知道怎么整了,因为有时候看一个controller或其它含注解的,想看看url就变得困难,哪位大神有这种特技,求解
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
securitit
2016-09-01
打赏
举报
回复
那得看消失注解的作用范围了 注解分为源码级、编译级和运行时,楼主应该知道吧。 得看你所谓的消失的注解是哪个级别的
炀大人
2016-09-01
打赏
举报
回复
只要能真正的解决问题,分都是没问题的,契约精神还是要遵守的
炀大人
2016-09-01
打赏
举报
回复
比如说java本身的注解,或者SSH框架的注解等,这些java代码编译后既然能tomcat里运行,应该还是有保留到class里的,但通过jad反编译后就不见了,我需要的就是@开头的这些注解,请问你知道如何设置吗?
myeclipse中配置读取
反编译
class
(附
使用
说明)
3. 将
jad
nt158.zip 解压,拷贝
jad
.exe 到%JAVA_HOME%\bin\ 目录下。 4. 安装插件net.sf.
jad
clipse_3.3.jar (将此文件拷到eclipse 的plugins目录(%eclipse_home%\plugins)下,例如C:\MyEclipse Enterprise Workbench 6.5GA\eclipse\plugins下)。 5. 设定路径:进入Window -> Preferences -> Java ->
Jad
Clipse,Path to decomiler设置为
jad
.exe的绝对路径,例如C:\j2sdk1.4.2\bin\
jad
.exe,Directory for temporary files设置为存放临时文件的决对路径这里我把它设置为C:\Documents and Settins\桌面\.net.sf.
jad
clipse 。 6. 在Eclipse 的Windows—> Perferences—>General->Editors->File Associations 中修改“*.
class
”默认关联的编辑器为“
Jad
Clipse
Class
File Viewer”。如果没有*.
class
,则点击“add"增加,如果没有
jad
clipse
Class
File Viewer,可以点击“Add-Internal Editors”,查找是否有
jad
clipse,若还是没有,则说明net.sf.
jad
clipse没有复制到正确的位置. 安装设置完毕,可以双击
class
文件,测试一下,正确的情况是:
反编译
成功,可以显示
class
文件(无需增加src源文件)为普通的java源代码样式,另外,在Myeclipse菜单栏上多出了一个
Jad
Clipse菜单. 现在可以通过myeclipse直接查看
class
文件,阅读代码效率高了许多~~~~~~ 安装时应注意:
jad
clipse的版本一定要和eclipse的版本一致! 比如,我用的Myeclipse版本为6.5,其包含的eclipse版本为3.3, 一开始我
使用
的是net.sf.
jad
clipse_3.2.4.jar,都不能正确浏览无源码的*.jar文件,后来我重新下载了net.sf.
jad
clipse_3.3.0.jar,才可以正确浏览!!! 总共需要下载两个文件: 1.
反编译
工具
jad
2. eclipse的插件
Jad
Clipse
jad
是命令行式的
反编译
程序,将
class
文件
反编译
java操作的工具,如下说明
几个
简单的
反编译
操作: 将当前文件夹下的abc.
class
文件
反编译
成abc.
jad
文件 D:\
jad
>
jad
abc.
class
将当前文件夹下的abc.
class
文件
反编译
成abc.java文件 D:\
jad
>
jad
-sjava abc.
class
jad
可以单独
使用
。
Jad
clipse是eclipse中的一个插件,是用于在eclipse中双击*.
class
文件时直接查它的*.java代码,相当于一个查看器,但不可以单独
使用
。
java类的
反编译
工具
反编译
别人的程序是不对的,但是有时候由于某种原因,不得不
反编译
别人的代码,那就需要一个工具了。小颖JAVA源代码
反编译
专家V1.4终极版是个很好的工具,但是只能对JDK1.4.2和之前的版本编译的程序
反编译
,而JDK5.0后的就无能为力了,但是可以下载
JAD
.EXE来逐个
反编译
CLASS
文件,不过如果碰到有几十个或几百个文件夹,并且目录很深的时候,就麻烦了,这个给出一个直接
使用
命令行
反编译
整个目录的方法:
使用
jad
批量
反编译
JAD
本身是一个命令行工具
在众多的JAVA
反编译
工具中,有几种非常著名的工具
使用
了相同的核心引擎——
JAD
,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java
Class
Viewer和国产的JAVA源代码
反编译
专家等等。
JAD
本身是一个命令行工具,没有图形界面,上述的这些工具大多是在
JAD
内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明
JAD
在JAVA
反编译
领域中的尊贵地位。
Java
反编译
工具CFR_110
如果需要
反编译
java 7的
class
, 个人推荐
使用
procyon, 其次是cfr 对复杂支持度还是很不错的。 个人认为Java(Android)反汇编的优秀程度排名 jGui > Jdec2.0 > procyod >
jad
> uudejava 对嵌套比较多的for 循环,try cache 建议
使用
2种工具以上的方法进行反汇编并进行对比。 这几种工具我都有共享 在CSDN关注个人下载频道。 这个工具截至到 2016-7-5 为止是最稳定的。 http://www.benf.org/other/cfr/ 需要安装java 环境推荐安装 JDK7 u80 64bit CFR
使用
方法,在命令行运行。 帮助: java -jar cfr_0_110.jar --help 反汇编一个类: java -jar cfr_0_110.jar SwitchTest.
class
反汇编一个包: java -jar cfr_0_110.jar java7_jar.jar --outputdir D:/Java/tmp
jocky 混肴编译rar包(ant和插件俩个版本)
Jocky混淆JAVA代码(保护你的JAVA项目) 一、前言 1.1 什么是Jocky? 我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.
class
文件),然后在运行期动态链接。这样,编译后的类文件中将包含有符号表,从而使得Java程序很容易被
反编译
。相信每一个Java开发人员,都曾经用过诸如
Jad
之类的
反编译
器,对Java的
class
文件进行
反编译
,从而观察程序的结构与实现细节。如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资,是开发人员经常需要面对的
问题
。 于是就出现了Java混淆编译器,它的作用是打乱
class
文件中的符号信息,从而使反向工程变得非常困难。 Jocky就是这样一款优秀的Java混淆编译器。 1.2 为什么需要Jocky? 目前业界有不少商业的甚或是开源的混淆编译器,但它们普遍存在一些这样或者那样的
问题
。一般而言,现有的混淆器都是对编译好的
class
文件进行混淆,这样就需要编译和混淆两个步骤。而事实上,并不是所有的符号都需要混淆。如果你开发的是一个类库,或者某些类需要动态装载,那些公共API(或者说:那些被publish出来的API)就必须保留符号不变,只有这样,别人才能
使用
你的类库。现有的混淆器提供了GUI或脚本的方式来对那些需要保留的符号名称进行配置,但如果程序较大时,配置工作将变得很复杂,而程序一旦修改,配置工作又要重新进行。某些混淆器能够调整字节码的顺序,使
反编译
更加困难,但笔者经历过混淆之后的程序运行出错的情况。 而Jocky与其它混淆编译器最大的不同之处在于:它是直接从源码上做文章,也就是说编译过程本身就是一个混淆过程。 1.3 Jocky是如何工作的? Jocky混淆编译器是在Sun JDK中提供的Java编译器(javac)的基础上完成的,修改了其中的代码生成过程,对编译器生成的中间代码进行混淆,最后再生成
class
文件,这样编译和混淆只需要一个步骤就可以完成。另外可以在源程序中插入 符号保留指令 来控制哪些符号需要保留,将混淆过程与开发过程融合在一起,不需要单独的配置。 1.4 Jocky的作用 1.4.1代码混淆 如前文所述,混淆编译是Jocky的首要用途。我们举一个最简单的例子,下面的SimpleBean是未经混淆的
class
文件通过
Jad
反编译
以后获得的源文件: 1 public
class
SimpleBean implements Serializable { 2 3 private String name = "myname"; 4 5 private List myList = null; 6 7 public void SimpleBean() { 8 myList = new ArrayList(10); 9 } 10 11 public void foo1() { 12 myList.add("name"); 13 } 14 15 private void foo2() { 16 } 17 18 private void writeObject(java.io.ObjectOutputStream out) 19 throws IOException { 20 21 } 22 23 } 下面是经Jocky混淆过的类文件,通过
Jad
反编译
后产生的源文件: 1 public
class
SimpleBean implements Serializable { 2 3 private String _$2; 4 5 private List _$1; 6 7 public SimpleBean() { 8 _$2 = "myname"; 9 this; 10 JVM INSTR new #4 ; 11 JVM INSTR dup ; 12 JVM INSTR swap ; 13 10; 14 ArrayList(); 15 _$1; 16 } 17 public void foo1() { 18 _$1.add("name"); 19 } 20 21 private void _$1() { 22
Java
50,530
社区成员
85,610
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章