【问题标题】:Is there a java classfile / bytecode editor to edit instructions? [closed]是否有 java 类文件/字节码编辑器来编辑指令? [关闭]
【发布时间】:2011-03-19 12:16:38
【问题描述】:

是否有用于编辑 java 类文件的实用程序(或 eclipse 插件)? 我想操作 java 类文件的字节码而不重新编译它,也没有完整的构建路径。

例如重命名方法、添加/删除指令、更改常量等。

我发现的唯一实用程序是:

  • classeditor 但它的功能非常有限(例如无法重命名事物和操作指令)。

  • jbe 不保存更改(可能是因为类验证失败 - 在我进行任何更改之前,尽管类运行良好)

    (jbe最初遇到类路径问题,将类路径添加到jbe.bat文件有帮助)

【问题讨论】:

  • jbe 有什么问题?它是 Java,所以它应该可以在任何地方运行。
  • @musikk 抛出异常:线程“main”中的异常 java.lang.NoClassDefFoundError: ee/ioc/cs/jbe/browser /BrowserApplication
  • 异常不是崩溃。你有一个类路径问题。
  • 如果我无法运行提供的入门示例,我通常会放弃一个项目。如果 that 不运行,那么还有什么不运行?
  • java bytecode editor?的可能重复

标签: java bytecode decompiler bytecode-manipulation .class-file


【解决方案1】:

我没有看到任何字节码 -> 字节码前端,但有很多后端。

我建议您查看许多字节码操作库,例如 javassist,它们允许加载字节码、对其进行操作并将其保存回磁盘,然后编写一个小型 main 来完成此操作。

【讨论】:

    【解决方案2】:

    我使用reJ 直接编辑类文件。

    它允许您使用十六进制编辑器编辑指令、方法、常量池、差异类和拆​​分视图。

    真是太棒了。

    【讨论】:

    • reJ 似乎已死(上一次发布于 2007 年)
    • 如果编辑成功,reJ 会很棒。我刚刚尝试插入需要参数的“ifne”指令,我得到一个 NullPointerException,因为它的图形用户界面仍未完成,它不允许传递预期的分支偏移量。实际上,我建议使用 reJ 来显示指令,使用 Java Decompiler 检查更改是否被理解,并使用普通的十六进制编辑器来编辑类文件。
    • 顺便说一句,JByteMod 可以正常工作,它完成了 reJ 无法做到的事情:grax.info 我已经用它来修补 JOGL 2.3.2 :)
    【解决方案3】:

    我写了一个open source Java assembler and dissasembler 你可能会觉得有用。

    它允许您将类文件分解为人类可读的程序集,对其进行编辑,然后将其重新组合成一个类。它最初是为编写混淆的crackmes而设计的,因此它支持许多其他工具不支持的许多晦涩的功能。如果您需要它目前不支持的任何功能,请随时与我联系,我会看看我能做些什么。

    【讨论】:

      【解决方案4】:

      查找this 字节码操作/代码生成库列表有用吗?

      【讨论】:

      • 我需要工作工具,我没有时间自己编写这样的工具(也没有那些库的帮助)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多