是否有 java 类文件/字节码编辑器来编辑指令? [关闭]

Posted

技术标签:

【中文标题】是否有 java 类文件/字节码编辑器来编辑指令? [关闭]【英文标题】:Is there a java classfile / bytecode editor to edit instructions? [closed] 【发布时间】: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?的可能重复 【参考方案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 字节码操作/代码生成库列表有用吗?

【讨论】:

我需要工作工具,我没有时间自己编写这样的工具(也没有那些库的帮助)。

以上是关于是否有 java 类文件/字节码编辑器来编辑指令? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

简述java虚拟机的工作原理

Java动态字节技术之Javassist

JVM字节码与Java代码层调优

Javassist/ASM 框架比较

Javassist/ASM 框架比较

10-java安全基础——javassist字节码编程