java - 我可以在运行时修改 Java 方法的字节码吗?

标签 java proxy hook bytecode javassist

我正在编写另一个大型 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 文件。

谢谢,
卡尔文

最佳答案

只需使用-javaagent opiton,它用于在运行时修改字节码。您可以从 This Link 中找到有关 -javaagent 的更多信息或来自 This Link

关于java - 我可以在运行时修改 Java 方法的字节码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19268011/

相关文章:

java - 如何在java中使用SetWindowsHookEx函数?

java - 无法访问其中包含句点的文件夹

c++ - 没有内联汇编的 x64 函数绕行

时间:2019-03-08 标签:c++d3dhooking-COMvtable

scala - Intellij IDEA : Run Scala REPL Console on a remote machine.

java - 从 WebSphere 中的请求获取客户端 IP 地址

go - Golang 中 smtp 客户端的自定义拨号器?

java - 对仅更新某些属性的方法进行单元测试

java - 对列表进行排序作为 JavaRDD 上收集的输出

java - GridBagLayout 行权重