0

我在内存中加载了一个 java 程序。在运行时使用 Java 调试器,我可以访问汇编代码并更改下一个 OPCODE,然后重新运行程序吗?请让我知道这是否可行。

提前致谢!

4

3 回答 3

0

我不确定是否要编辑它,但是使用 java 编译器,您当然可以使用类似的东西生成它

javac MyClass.java

javap -c MyClass > MyClass.bc

这是一篇很好的文章,可以从 http://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/

我想有一种方法可以改变它然后用 javap 重新编译

编辑 显然有一些Java字节码的开源编译器见http://en.wikipedia.org/wiki/Jasmin_%28Java_assembler%29

于 2013-10-17T08:08:03.937 回答
0

您可以使用 javassist 等库在运行时更改字节码。看一看:

http://www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/

于 2013-10-17T08:13:18.077 回答
0

您使用的是哪个调试器?如果您使用 Eclipse IDE,即使程序已经在运行,您也可以更改代码,而无需停止它。但是,只有在类的接口不受影响时才能这样做。

所以对你的问题的简短回答是:是的,可以做到。

但这取决于您的调试器实现。

于 2013-10-17T12:49:11.040 回答