Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有。
对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看到远吗,对于理解代码、调试的帮助很大。而如果 Jar 包没有打包源码,实际上也可以通过反编译的方法得到源码。道理很简单,Java 规范中,生成的.class 文件所包含的信息完全能逆向的重构出源码。
当然,一些代码为了防止自身 Jar 包被人反编译,会做代码混淆掩人耳目。其中最简单的一种方法就是是通过修改类名、变量名、方法名等方法让反编译的源码难于阅读理解。不过这个方法在混淆的时候需要特别注意:不能混淆对外提供接口的类。如果混淆了提供给外部的 API 接口的名字,整个工程就无法被正常使用了。
本文要举例的是对阿里云开放云存储 Java SDK 的反编译。由于 SDK 需要暴露接口给其他开发人员调用,本身确实没有做混淆(不理解阿里云为何没有将它开源出来),故可以做简单的反编译来查看源码。
Jadclipse 的安装使用
Jadclipse 插件的反编译功能源于 Java 反编译工具 Jad。但用裸的 Jad 来命令行执行不太友好,于是就有了 Jadclipse。
1.下载 Jad 反编译工具
下载好 Jad 工具,解压后放在合适的路径下。
Jad 下载链接
2.安装插件
按照 Eclipse 版本下载匹配的 Jadclipse 插件:下载链接。(这个插件的最近修改是 2007 年,只要不是使用的老掉牙的 Eclipse,都可以下载最新的插件版本 jadclipse3.3)。
解压后,将对应版本的.jar 包放入 Eclipse 的插件目录(eclipse/plugins)下。
3.配置 Jadclipse
插件中有两个一定要配置好的选项:
- Jad 执行文件的路径
- .class 文件打开时的关联工具
以下配置路径的方式可能 Windows 跟 Mac 版本的 Eclipse 各不相同,不过都比较简单,可以自行 Google。
3.1 Jad 执行文件路径
在 Eclipse 中,依次打开 Preference -> Java -> JadClipse
,修改Path to decompiler
的值,定位到 Jad 的执行文件路径。
3.2 .class 关联工具
由于 Eclipse 默认.class 文件打开使用的是 Class File Viewer,如果.class 没有关联的源文件,则无法查看源代码。需要将.class without source
类型的文件的关联编辑器首选设置为 JadClipse Class File Viewer。
打开方式如下: Windows—> Perference—>General->Editors->File Associations
4.测试
配置好后,可能需要重启 Eclipse(或许是插件本身不够 Robust,博主在没有重启的情况下尝试打开没有附带源代码的.class 文件时失败了,重启后一切 ok)。
下载阿里云开放云存储 SDK:下载链接,解压后,将相应的 Jar 包加入到工程中。
点击其中的某个.class 文件,即可显示出它的源代码。文件的头部会有 Jad 的相关信息:
1 |
|
PS
后来 Google 相关内容时,找到了 JadClipse 在 Eclipse Market 的版本:请戳,或许对大家有用=)
原文地址:http://biaobiaoqi.me/blog/2013/10/21/decompiliation-jar/
版权声明:*转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
反编译Jar包的更多相关文章
-
jad 反编译 jar包
1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...
-
IDEA—使用插件反编译jar包
关注微信公众号:CodingTechWork,一起学习进步. 引言 在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...
-
如何修改可运行Jar包,如何反编译Jar包
将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All ...
-
JD-GUI反编译jar包为Java源代码
程序员难免要借鉴其他java工程的代码.可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成可编译运行的项目.本文介绍的反编译工具是 ...
-
IDEA反编译jar包源码
1.maven 项目查看jar源码 如何在idea中查看jar包源码 文章目录 准备jar包 idea打开文件夹 最后一步 准备jar包 例如,我准备看resin的jar,在桌面准备了一份 ide ...
-
Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件
引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行 ...
-
MatLab 2014a编译jar包时mcc无法使用的问题
http://blog.csdn.net/heroafei/article/details/43273373 MatLab 2014a编译jar包时mcc无法使用的问题 2015-01-29 16:5 ...
-
protobuf 在win10系统如何编译jar包
最近在搞java服务器项目,前段要求用protobuf进行数据传输,以前没搞过,查了很多资料,走了一些弯路! 先把一些需要下载的链接放上来: protobuf下载地址:https://github.c ...
-
JAVA 如何反编译JAR文件
1 直接的jar文件可以用winrar解压,然后得到class文件,但是这里得到的class文件也是编译过的二进制文件,用传统的文本编辑器无法打开. 2 用XJad这个软件可以反编译Jar文件,直接找 ...
随机推荐
-
textarea去掉右侧滚动条,去掉右下角拖拽
代码: <TEXTAREA style= "overflow:hidden; resize:none; "> </TEXTAREA> 当使用背景图片的时候, ...
-
UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用
UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片.给UIButton设 置了title和image后,它们会图片在左边,文本在 ...
-
CodeForces 705B (训练水题)
题目链接:http://codeforces.com/problemset/problem/705/B 题意略解: 两个人玩游戏,解数字,一个数字可以被分成两个不同或相同的数字 (3可以解成 1 2) ...
-
JavaEE(1) - Weblogic 服务器管理的数据源
JBoss下载: http://jbossas.jboss.org/downloads http://www.cnblogs.com/xw-cnblogs/articles/2439969.html ...
-
BZOJ 3097: Hash Killer I【构造题,思维题】
3097: Hash Killer I Time Limit: 5 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 963 Solved: 36 ...
-
【转】SEGGER Embedded Studio 新建stm32f103工程
@2018-12-22 SEGGER Embedded Studio 新建stm32f103工程
-
My IELTS result has come out 我的雅思成绩出来了
Thanks to god, I finally get a score of 6.5, although my socres of listening and writing are only ...
-
设计模式(一)Chain Of Responsibility责任链模式
设计模式篇章,源于网课的学习,以及个人的整理 在我们接收用户提交的字符时,常常会使用到过滤,在学习责任链模式前,我们是这样做的 1.定义一个类 public class MsgProcesser { ...
-
杂项:Mantis
ylbtech-杂项:Mantis 缺陷管理平台Mantis,也做MantisBT,全称Mantis Bug Tracker.Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的 ...
-
JSP,servlet和数据库之间传值出现乱码的问题
近期困扰我非常久的一个问题最终攻克了,为他我头疼了好几天,问题是JSP通过servlet向数据库传值,查询显示在页面的时候出现了乱码,原先我数据库中有两行带有中文的数据,查询的时候倒是没有出现乱 ...