我在内存中加载了一个java程序。在运行时使用Java调试器,我可以访问汇编代码并更改下一个OPCODE然后重新运行程序吗?如果可行,请告诉我。
提前致谢!
答案 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之类的库在运行时更改字节码。看看:
答案 2 :(得分:0)
您使用的是哪个调试器?如果使用Eclipse IDE,即使程序已在运行而无需停止,也可以更改代码。但是,只有在没有类的接口受到影响的情况下才能执行此操作。
所以对你的问题的简短回答是:是的,可以做到。
但这取决于您的调试器实现。