【发布时间】:2013-10-09 09:26:34
【问题描述】:
我正在写另一个大型java程序的插件。
我想在运行时修改java程序的一些java方法的一些字节码,以便拦截方法调用(即在方法中注入一些hook代码)。
有什么办法可以做到这一点?
PS:
我检查了以下方法:
1.更改java程序的类加载器。 (我们无法更改)
2.使用java代理。 (我们不能使用 java 代理,因为 java 代理会创建一个新的代理对象。我们不使用代理对象。我们需要挂钩 java 程序的对象,并使用该对象)
3. 使用 -javaagent 选项(我们不能为 java 程序添加命令行选项。)
PS 更多 [再次编辑]:
我的类是由 ext 类加载器加载的(我将 jar 文件放在 JAVA_HOME\lib\ext 文件夹中)。
大型java程序是Browser加载的applet程序。当浏览器启动小程序时,它也会加载我的类。
PS 更多 [再次编辑]:
虽然它在 Applet 中运行。我可以得到完全的许可。因为我可以修改java.policy和java.security文件。
谢谢,
卡尔文
【问题讨论】:
-
如果您遇到安全限制,他们可能不希望您这样做。
-
嗨锑,我有完全的权限。我可以修改 JAVA_HOME\lib\security 中的策略文件
-
那么为什么不直接离线修改课程呢?
标签: java proxy hook bytecode javassist