对于 Java 中的字节码检测,有 asm 框架以及 bcel 和 javaassist 库。
但是,我需要在本机代码中进行检测,因为在 javaagent 运行时已经加载了一些 java 类,例如 java.lang.Thread、java.lang.Class 等
有没有用于在本机代码中检测 java 类的库?
编辑:
似乎有一点混乱。
我想要的是:
创建一个本机 java 代理,它使用 JVMTI api 在加载类时使用 OnClassLoad 事件挂钩更改该类的字节码。
我在博士研究期间就遇到了这个问题。对我来说最有效的答案是使用 java 库(我使用 ASM)在单独的 JVM 中执行字节码修改。
我使用 JVMTI 类加载挂钩来捕获类文件,并使用 tcp 连接将其传输到单独的 JVM。一旦类在单独的 JVM 中被修改,我将其返回给 JVMTI 代理,后者将其复制到 VM 内存中,并将指向修改后的类文件的指针返回给 JVM。
我发现在正在分析的同一个 JVM 中编织类太困难了,因为我想要修改的系统类文件(例如 java.lang.Object)必须在我需要执行编织的任何类文件之前加载。在选择最终使用的单独 JVM 方法之前,我寻找了 c/c++ 字节码库,但没有取得太大成功。
您可以使用编织器 JVM 的主机名/端口来参数化 JVMTI 代理,也可以使用某种形式的发现,具体取决于您的要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)