【这是一猿小讲的第 59 篇原创分享】
Bad artists copy; Good artists steal.【 平庸的艺术家抄; 杰出的艺术家偷 】——毕加索。
To copy others is necessary, but to copy oneself is pathetic.【 模仿别人是必要的,但重复自己是可悲的 】——毕加索。
艺术家如此,在程序猿前进的道路上,又何尝不是如此呢?模仿写代码必然是头等大事,因为 俗话 说天下代码一大抄。 但是有些场景下你拿到都是 JAR 包,而并非源码,咋办?
另外,在项目对接过程中,你有没有经历过外部门或者其它公司给你一个对接的 SDK,但是有没有一丝好奇就想知道 SDK 里面写的啥?到底该怎么窥探?
好了,任何困难都阻挡不了程序猿前进的脚步,任何问题都扑灭不了程序猿好奇的火苗。 接下来就就一起聊聊 Java 反编译相关的知识。
大家都知道,将源文件转换成二进制执行代码的过程叫“编译”,比如将 Java 源代码编译成 JAR 可执行文件; 那么把二进制执行文件转换成源文件的过程就叫“反编译”,比如将 JAR 反编译成源文件。
那么 Java 平台下有没有开源的轮子,可以让反编译这件事情变得简单呢?
那是当然,这样的轮子一箩筐。 Java 平台下有Jad、Jode、Java Decompiler(JD-GUI)等反编译利器,编程这些年,几乎都用过,但是目前电脑上只有 Java Decompiler(JD-GUI)这一款在用,之前分享的很多关于源码的文章,这个工具立下了汗马功劳。
1. 工欲善其事必先利其器
Java Decompiler (JD-GUI)目前最新版本为1.6.3,并且提供 Windows、Linux 和苹果 Mac Os 三个平台的可执行版本。
http://java-decompiler.github.io/#jd-gui-download
只需选择适合你的那一款。
2. 工具而已,用就行啦
完成下载,安装完毕后,一杯热腾腾的咖啡呈现在你面前,让你垂涎欲滴、跃跃欲试。
还记得《 爱情36技之暗送秋波的技术 》 文章中为 Python 菇凉打造的一款实时监控的随身听设备 walkman.jar 吗? 我们不妨用 JD-GUI 打开看看里面写的都是啥?
嗯,感觉反编译还可以,貌似效果也是那么回事儿!
3. 简单的工具,不多说
JD-GUI 支持泛型、enum 枚举类型和Annotation 的反编译; 支持整个 JAR 文件的反编译,并且在反编译后的源代码可直接点击进行相关代码的跳转,说一千道一万,不妨自己试试看。
2 分钟系列平淡的分享到这就结束了, 主要解决网友提出的一个问题,希望对你也有点帮助吧。
推荐阅读:
Java 配 Shell 等于美酒加咖啡
爱情36技之暗送秋波的技术
爱情36技之追美妹的技术