首页 > 编程知识 正文

java基础语法教程,java反编译的代码可以修改么

时间:2023-05-06 04:42:47 阅读:115425 作者:137

虽然有很多Java反编译工具,但个人最容易使用的是jd-gui。 当然jad也很好。 jd-gui主要提供图形界面,便于操作,但jd-gui很久没有更新。 java 7出现很久了,jd-gui在反向编译java 7的class文件时会遇到一些语法不支持的问题。

这是在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-Java8lambdas (preandpostjavabeta 103 changes ),Java7Stringswitchesetc,butiswritenenetion

这是官方网站的说明,Jar在附件中提供下载。

语法:

反向编译单个class文件:

Java代码

Java-jar CFR _0_ 59.jarswitchtest.class

反向编译整个Jar包:

Java代码

Java-jar CFR _0_ 61.jar Java7_ jar.jar-- output dir d :/Java/tmp

以下是具体使用,以上class为例,使用cfr进行反编译:

这与jd-gui的结果一样,表明java7语法糖只是处理干净,即使反向编译也是原始数据类型。

通过cfr对java 7自动关闭语法进行反向编译的结果是,显式向finally添加了close方法。

如果在cfr反编译Switch String中使用Goto语句,在Goto中使用equals字符串进行比较,则比jd-gui反编译的结果要干净一些。

可见cfr还是很好用的。

(二) procyon介绍

procyon官网链接:

使用语法:

帮助

Java代码

java-jardecompiler.jar

反向编译单个class文件

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环境。

以上面的class为例,看看procyon反编译的结果

与cfr一样,procyon通过反向编译显式地在finally中关闭资源。

procyon反向编译java 7语法糖以显示原始数据类型。

您可以看到,对procyon切换字符串进行反向编译的结果是最直接的。

它还支持procyon反编译Jar。

反编译工具还有Krakatau。 我用Python 2.7编译了。 电脑是Python 3.3,如果不能运行就不测试。 感兴趣的朋友请自己测试。

链接到:

Java代码

33559 github.com/story yeller/krakatau

如果需要反向编译java 7的class,我个人建议使用procyon,然后使用cfr。

文章是原创的,转载请注明出处。 请指出不好的地方。 如果需要也无法下载附件,请发邮件至1329186624@qq.com。 发送附件cfr和procyon。 谢谢你。

全文结束。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。