Java代码反编译
相信很多童鞋肯定是遇到过反编译Java代码的情况,我猜想你大部分情况下用的是JD-JUI或者说是Idea、Eclipse的一些插件,但是是否曾经想过如何用代码实现呢?
本文章不是讲字节码里面格式的,这样的文章网上一大片,随便搜索就能搜索出很多来~
直接上地址
可参考GitHub地址:https://github.com/shaozhuguang/java-decompiler
说明
我们的项目中确实有需求需要自己实现一下反编译,因为是在代码里面实现,并且最好是基于Maven的方式,因此经过调研,发现procyon 这个库还是很不错的,能实现JDK1.8的反编译处理。
procyon这个库有一个缺陷,就是没有针对InputStream或者byte[]的实现,都是针对.class或者具体类(由ClassLoader加载)的。
但在实际的场景中,例如我们的应用场景是区块链智能合约的可视化,该智能合约是通过Java语言写的(使用的是JDChain开源代码,地址:https://github.com/blockchain-jd-com/jdchain)。
可视化自然是显示源码,除了让用户上传源码之外,其它貌似就只有反编译了,并且这种类似于数据库的存储方式,明显不适合使用.class文件的解析方式,毕竟假设没有写文件权限可咋搞~
** 项目仍有很大改进空间,欢迎提意见~ **
另外,推广下底层消息传递框架:https://github.com/shaozhuguang/msg-transfer
保证让你用着非常爽~~~~
后续会提出通过代码进行编译的教程,敬请期待~