如何重新组装由 javap 生成的 java 字节码?

tyc*_*177 4 java decompiling bytecode disassembly

我希望能够编辑字节码并重新编译为可执行的类文件。我不知道该怎么做。我试过用 javap -c 和 -v 反编译,编辑一些东西,然后把它改回我的类文件,但我收到一个错误“错误:找不到或加载主类 Test.class”。我还想从字节码生成 java 源代码。有什么帮助吗?我想在不使用外部程序的情况下自己做这件事。如果可能的话,我想自己做。

Mik*_*bel 5

的输出javap不适合汇编程序的输入。如果要反汇编和重组 Java 字节码,则需要执行以下操作之一:

  1. 使用第三方汇编器格式的第三方工具。
  2. 编写您自己的工具来(反)汇编第三方汇编器格式。
  3. 使用您自己的汇编程序格式编写您自己的工具。

我会看看SootKrakatau,它们都具有完整的(反)组装功能。Soot 支持一些字节码的中间表示。我相信 Krakatau 使用基于流行的 Jasmin 的表示(尽管该工具本身是用 Python 编写的)。