文档章节

Eclipse 反编译插件 jadClipse

ashuo
 ashuo
发布于 2015/12/25 17:07
字数 1326
阅读 836
收藏 12

行业解决方案、产品招募中!想赚钱就来传!>>>

反编译插件有 jdeclipse 和 jadeclipse。

(1) jdeclipse

http://www.djjavadecompiler.com/

(2) jad + jadeclipse

下载 jadeclipse:http://sourceforge.net/projects/jadclipse/files/

下载 net.sf.jadclipse_3.3.0.jar 后,复制到 eclipse主目录下的 plugin文件夹下,然后重启 eclipse。

 

下载 jad.exe:http://www.varaneckas.com/jad/ (从维基中找到的地址)

下载完成后,复制到任意路径

Window->Preferences->Java->JadClipse.

1、Path to decompiler,这里设置反编译工具jad的全路径名,下载jad.exe的全路径.

2、Directory for temporary files,这里设置临时文件路径。
至于Window->Preferences->Java->JadClipse目录下的Debug,Directives,Formatting,Misc目录中的参数设置,就不罗嗦。
 

安装完成后:

在Eclipse的视窗系统――> Perference――>General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”。“*.class without source”默认关联的编辑器为“JadClipse Class File Viewer”设置完成后,双击*.class文件,eclipse将自动反编译。

 

像这样就安装成功了

 

常见的安装失败:

1,路径不对

/*jadclipse*/

/*
DECOMPILATION REPORT

Decompiled from: E:WKSPBOS60EAS60SPlibcommonbosmetadata.jar
Total time: 0 ms
Jad reported messages/errors:
Exit status: 0
Caught exceptions:
java.io.IOException: CreateProcess: D:kingdeeeasbosjad -p -t4 -dead -noconv -lradix10 -radix10 Context.class error=3

 

2,安装的jad版本不对

/*jadclipse*/

/*
DECOMPILATION REPORT

Decompiled from: E:WKSPBOS60EAS60SPlibservereasfi_arap-server.jar
Total time: 250 ms
Jad reported messages/errors:
Exit status: 1
Caught exceptions:
*/

 

3,目前尚无解决

java.lang.InterruptedException 

at java.lang.ProcessImpl.waitFor(Native Method) 

at net.sf.jadclipse.JadDecompiler.decompile(JadDecompiler.java:167)

 

 

 

 

 

使用方法:

 

[1] 反编译一个class文件:jad example.class,会生成example.jad,用文本编辑器打开就是java源代码

 

[2] 指定生成源代码的后缀名:jad -sjava example.class,生成example.java

 

[3] 改变生成的源代码的名称,可以先使用-p将反编译后的源代码输出到控制台窗口,然后使用重定向,输出到文件:jad -p example.class > myexample.java

 

[4] 把源代码文件输出到指定的目录:jad -dnewdir -sjava example.class,在newdir目录下生成example.java

 

[5] 把packages目录下的class文件全部反编译:jad -sjava packages/*.class

 

[6] 把packages目录以及子目录下的文件全部反编译:jad -sjava packages/**/*.class,不过你仍然会发现所有的源代码文件被放到了同一个文件中,没有按照class文件的包路径建立起路径

 

[7] 把packages目录以及子目录下的文件全部反编译并建立和java包一致的文件夹路径,可以使用-r命令:jad -r -sjava packages/**/*.class

 

[8] 当重复使用命令反编译时,Jad会提示“whether you want to overwrite it or not”,使用-o可以强制覆盖旧文件

 

[9] 还有其他的参数可以设置生成的源代码的格式,可以输入jad命令查看帮助,这里有个人做了简单的翻译:jad命令总结

 

[10] 当然,你会发现有些源文件头部有些注释信息,不用找了,jad没有参数可以去掉它,用别的办法吧。

 

最后,jad不能直接反编译jar包,直接解压了再反编译吧(这个方法很显然,我实在不好意思写出来)。

 

现在就总结一下jad 命令

 

首先,看一下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.class

 

tree目录下的所有*.class文件

    jad -o -r -sjava -dsrc tree/**/*.class

 

    unix可以表示为:jad -o -r -sjava -dsrc 'tree/**/*.class'

 

指定输出文件的名字的话,用以下的转移命令

 

jad -p example1.class > myexm1.java

 

输出带字节码注释和源码的(最常用)

 

jad -o -a Test.class > ss.java

 

彩蛋:

将jar中的class 整个反编译成Java,并且保存原有包结构

[jad_home]/jad.exe -r -ff -d src -s java com/**/*.class

其中-r 表示恢复源文件的目录结构,,-ff 表示将类属性定义放在类方法定义之前, -d 表示输出目录,-s 表示文件的扩展名。

com/**/*.class为要加载的class文件,可以用绝对路径标示,也可以用相对路径标示

 

所有的java文件将会被放置到src目录下。

 over!
 

下一篇: 反射
ashuo
粉丝 5
博文 75
码字总数 53769
作品 0
浦东
程序员
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6K
18
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
极速博客引擎--Gor

gor 是使用 golang 实现的类Ruhoh静态博客引擎(Ruhoh like),基本兼容ruhoh 1.x规范. 相当于与ruhoh的官方实现(ruby实现), 有以下优点: 速度完胜 -- 编译wendal.net近200篇博客,仅需要1秒 安装...

wendal
2013/01/20
3.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库高频面试点,事务/乐观锁/悲观锁/CAS/MySQL存储引擎

事务的ACID特性是什么? 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读...

osc_45536bvu
49分钟前
16
0
大数据BI软件助力企业数字化转型

当下,「新基建」势头正盛,随着“新基建”成为热议话题,数字化也随之成为企业面临的新机遇和新挑战。新基建的核心就是数据,数据是数字经济和企业数字化转型的生产要素和发展动力。 再看看...

osc_0boqdoe2
50分钟前
0
0
凯旋创投来志刚:基因治疗新时代,大戏刚刚开始

  2017 年,全球第一个基因治疗方法 CAR-T 细胞药物 Kymriah 获得 FDA 上市批准,从此掀起了基因治疗的热潮。随着相关技术和政策的不断成熟,基因治疗市场也随之扩大。根据德勤发布的《引领...

osc_k3vwonkw
51分钟前
10
0
LightningChart.NET使用两个BarSeries创建简单的2D图表

本教程介绍了如何使用两个BarSeries创建简单的2D图表。 BarSeries将数据值表示为矩形条,并且可以用于以非常清晰的方式可视化数据之间的差异和方差。 在本教程中,BarSeries用于表示两年期间...

roffey
52分钟前
0
0
Mybatis trim 标签的 2 个妙用!

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼...

osc_x03qsedc
52分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部