我认为这并不是一个完整的答案,但是有些指针可能提供了一些可行的方法:
(1)就查看和直接使用字节码而言,旧的BCEL类构造工具包可能很有用(它是我所知道的唯一的字节码GUI编辑器)。
(2)就调试和逐步执行字节码而言,与Eclipse的调试器集成在一起的Eclipse
插件可能会满足您的需求。
我不知道有任何实用程序可以组合这些功能,并允许您在执行代码时操作字节码(至少以与OllyDbg等相同的方式)。但是,Java
调试器API应该能够支持在运行时对代码进行操作(尽管从总体上讲,由于HotSpot和JIT的本质,我不知道是否有可能在调用指令之前重写一条指令-
-当前执行的字节码操作码实际上是解释器如何选择实现操作的一种抽象,与本机代码不同,在本机代码中,反汇编的操作码实际上是发送给CPU的指令。另外,您可以研究Java
Instrumentation
API,该API提供了一种在运行时重新定义字节码的方法。而且当然,各种开源字节码操作库中的任何一个都可以帮助或提供启发。
而且,当然,总是可以选择绕过整个JVM基础结构,而只是将调试器附加到JVM进程。此问题以及与此问题相关的链接在此页面上都有一些讨论。
然而,最重要的是,尽管您试图实现的目标虽然在本地代码世界中很普遍,但在Java世界中并不是一种普遍的做法(使用Java的部分原因是抽象性)从所有血腥细节)。这种情况以及字节码反编译的相对琐碎的本质(与C
++相比)导致了这种需求稀缺的情况,这种工具也是如此。



