我正在编写另一个大型 java 程序的插件。
我想在运行时修改java程序的一些java方法的一些字节码,这样我就可以拦截方法调用(即在方法中注入(inject)一些hooking代码)。
有什么办法可以实现吗?
附言:
我检查了以下方法:
1.改变java程序的classloader。 (我们不能改变它)
2.使用java代理。 (我们不能使用 java 代理,因为 java 代理会创建一个新的代理对象。我们不使用代理对象。我们需要 Hook java 程序的对象,并使用该对象)
3. 使用 -javaagent 选项(我们不能为 java 程序添加命令行选项。)
PS更多[再次编辑]:
我的类是由 ext 类加载器加载的(我将我的 jar 文件放在 JAVA_HOME\lib\ext 文件夹中)。
java大程序是Browser加载的applet程序。当浏览器启动小程序时,它也会加载我的类。
PS更多更多[再次编辑]:
虽然是运行在Applet中。我可以获得完全许可。因为我可以修改 java.policy 和 java.security 文件。
谢谢,
卡尔文
最佳答案
关于java - 我可以在运行时修改 Java 方法的字节码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19268011/