java - 反编译 JVM 语言

标签 java jvm reverse-engineering decompiling jvm-languages

是否可以将 Groovy、Scala 等 JVM 语言反编译为它们的初始形式?

如果我尝试反编译一个 4 行的 Groovy 类,我会得到大约 20 行反编译的 Java 代码。

这与其说是实际问题,不如说是理论问题,因为市场上没有这样的反编译器(据我所知没有)。

谢谢。

最佳答案

是的,Java 反编译器可以管理类似的保真度(意思是:代码看起来相似,但不一定完全相同)。

但是,您需要针对每种语言的专用反编译器。

编辑:我认为我需要澄清我期望的保真度:

  • 局部变量的名称可以重现也可以不重现
  • 循环类型可能被误解(for 替换为 while, ...)
  • 更笼统:可以用两种类似方式完成的事情可能会被误解
  • ...

所有这些都是在反编译 Java 代码时也会出现的错误,仅仅是因为字节码与 Java 源代码的关联不是 1:1。

但是,如果您有一个专用的 Groovy 反编译器,那么我强烈怀疑它通过反编译已编译的 Groovy 代码可以生成比 Java 反编译器可读性更高的代码。

关于java - 反编译 JVM 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722729/

相关文章:

java - 如何调整 jvm 使其崩溃而不是英勇地 GC 直到 100% CPU 利用率?

java - OKTA 与其他 SSO 的集成

java - 更改屏幕旋转时 ViewPager fragment 消失

java - 采访: Collections Iterator

usb - 逆向工程游戏 Controller 时没有 USB 流量

sql - 创建没有任何外键的数据库实体图

c - 我如何编译一个没有所有膨胀的c程序?

java - 如何在 Android 代码中动态地为字符串添加粗体和下划线?

design-patterns - 在 Clojure 的宏中声明设计模式

java - Java 平台的描述和运行代码是否存在一系列老的安全问题?