在Java中使用调试器可以访问汇编代码(OPCODE)并进行更改吗?

时间:2013-10-17 06:44:23

标签: java debugging memory assembly opcode

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

提前致谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用诸如javassist之类的库在运行时更改字节码。看看:

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

答案 2 :(得分:0)

您使用的是哪个调试器?如果使用Eclipse IDE,即使程序已在运行而无需停止,也可以更改代码。但是,只有在没有类的接口受到影响的情况下才能执行此操作。

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

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