代码之家  ›  专栏  ›  技术社区  ›  joaofbsm

将Java字节码重新组装为时出错。使用Krakatau的类文件

  •  0
  • joaofbsm  · 技术社区  · 8 年前

    我试图使用Krakatau来组装本机Java字节码,用 javap -c ,但我得到了一个奇怪的错误:

    > python Krakatau/assemble.py Main.bc
    Krakatau  Copyright (C) 2012-17  Robert Grosse
    This program is provided as open source under the GNU General Public License.
    See LICENSE.TXT for more details.
    
    Processing file Main.bc, 1/1 remaining
    Main.bc:1:1: error: Expected '.class' or '.version'.
    Compiled from "Main.java"
    

    我已经检查了项目GitHub存储库中的所有内容,但似乎没有任何帮助。它是如何期待一个。我使用汇编程序时的类文件?我的字节码应该是某种形式的Jasmin语法吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Antimony    8 年前

    的输出 javap 无法重新组装。它的目的是帮助Java程序员调试他们的代码,并且不是完整的或机器可读的。

    Krakatau使用基于Jasmin语法的汇编格式。Krakatau包含一个汇编器和一个反汇编器,因此您可以使用Krakatau反汇编器将类文件反汇编为文本汇编文件,然后将其重新组装为类文件。

    另一方面, 缺少许多功能,并在输出中隐藏内容。它对于快速检查很有用,但如果您真的想在较低级别查看类文件中的内容,那么无论如何都需要使用Krakatau。

        2
  •  1
  •   Antimony    8 年前

    喀拉喀托文档中没有任何内容表明其旨在转换 javap -c

    如果您想使用Krakatau转换字节码文件,则应将Krakatau用于反汇编步骤 javap-c .

    这个 Krakatua README.txt 文件解释了如何做到这一点。

    推荐文章