我正在编写另一个大型 java 程序的插件。
我想在运行时修改java程序的一些java方法的一些字节码,以便拦截方法调用(即在方法中注入一些钩子代码)。
有什么办法可以做到这一点?
PS:
我检查了以下方法:
1.更改java程序的类加载器。(我们不能改变它)
2.使用 java 代理。(我们不能使用 java 代理,因为 java 代理会创建一个新的代理对象。我们不使用代理对象。我们需要挂钩 java 程序的对象,并使用该对象)
3. 使用 -javaagent 选项(我们不能添加java 程序的命令行选项。)
PS 更多[再次编辑]:
我的类是由 ext 类加载器加载的(我将 jar 文件放在 JAVA_HOME\lib\ext 文件夹中)。大型java程序是Browser加载的applet程序。当浏览器启动小程序时,它也会加载我的类。
PS more more [再次编辑]:
虽然它在 Applet 中运行。我可以得到完全的许可。因为我可以修改 java.policy 和 java.security 文件。
谢谢,
卡尔文