java怎么反编译,java反编译命令用法
虽然有很多Java反编译工具,但jd-gui是个人最容易使用的。当然jad也很好。Jd-gui主要提供图形界面,操作简单,但是jd-gui已经很久没有更新了。java 7已经存在很久了,jd-gui在反编译Java 7的类文件时会遇到一些语法不支持的问题。
这是java7支持的开关上使用的字符串。看看jd-gui反编译的结果。
反编译的结果看起来有点迂回。当然,结果是一样的,但是代码的意图并不直接。
我们来看看java 7资源的自动关闭。
Jd-gui反编译结果:
我用的jd-gui反编译不正确,我的版本可能不是最新的。
我们来看看java 7的语法糖函数:
Jd-gui反编译结果:
反编译的结果是正确的。综上所述,jd-gui不支持java 7资源自动关闭语法。
介绍两个支持java 7语法的反编译工具。是cfr和procyon。你可能听说过。打个比方看看效果如何。
(cfr概述
Cfr官网链接:
Java代码
cfrwilldecompilemodernjavafeatures-Java 8 lambdas(preandpostjavabeta 103更改),Java7Stringswitchesetc,butiswritenenetion
这是官网的描述,Jar在附件里提供了下载。
语法:
要反转单个类文件:
Java代码
Java-jar CFR _ 0 _ 59 . jarswitchtest . class
反向编译整个Jar包:
Java代码
Java-jar CFR _ 0 _ 61 . jar Java 7 _ jar . jar-输出目录d :/Java/tmp
以下是具体使用,以上面的类为例,使用cfr进行反编译:
这和jd-gui的结果是一样的,说明java7语法糖只是处理干净了,即使逆向编译也是原来的数据类型。
作为通过cfr反编译java 7自动关闭语法的结果,close方法被显式地添加到finally中。
如果在cfr反编译开关字符串中使用Goto语句,与Goto中的equals字符串进行比较,会比jd-gui反编译干净。
可见cfr还是很有用的。
(2)原花青素简介
Procyon官网链接:
使用语法:
帮助
Java代码
java-jardecompiler.jar
反向编译单个类文件
Java代码
Java-jar procyon-decompiler-0 . 5 . 24 . jarautocloseableexample . class
反编译整个Jar包
Java代码
Java-jar procyon-decompiler . jar-jarmyjar . jar-oout
提醒:
Java代码
Java7isrequiredtorun
Procyon需要java 7环境。
以上面的类为例,看看procyon反编译的结果。
像cfr一样,procyon最终通过反编译显式地关闭资源。
Procyon反编译java 7语法糖以显示原始数据类型。
可以看到,反编译procyon开关字符串的结果是最直接的。
它还支持procyon反编译Jar。
反编译器也有喀拉喀托。我用Python 2.7编译的。电脑是Python 3.3。如果它不能运行,就不会被测试。感兴趣的朋友请自测。
链接到:
Java代码
github.com/story耶勒/喀拉喀托33559号
如果需要逆向编译java 7的类,我个人建议先用procyon,再用cfr。
文章为原创,转载请注明出处。请指出不好的地方。如果你需要但无法下载附件,请发邮件给1329186624@qq.com。发送附件cfr和procyon。谢谢你。
全文结束。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。