5

我正在寻找用于 C 或 C++ 中的 Java 的 BCI(字节码检测)库,以在JVMTI 代理中使用。

最好的情况是纯 C语言中的ASMBCEL 。

到目前为止,我发现的最接近的东西只是java_crw_demoKelly O'Hair 几年前编写的一个演示,此后一直用于 Sun 的/Oracle 的教程中。

你知道别的吗?

一些基本原理:我正在构建一个检测工具来添加一个 getter 方法java.lang.Object并在Object. 由于这个原因,我不能使用 Java 代理。此外,出于复杂性和速度的原因,我想避免生成辅助 JVM 来执行检测。

4

2 回答 2

1

我很久以前就开始用 C 写一个,但由于缺乏动力,我没有走得很远。AFAIK 在 C 中没有公开版本,但是根据JVM Specification编写一个简单的版本来满足您的需求应该不会太难。您应该对有关class文件格式的章节以及有关指令集的章节特别感兴趣。

于 2012-07-31T16:27:34.897 回答
1

我找到的唯一合理的解决方案是将字节码实际通过管道传输到使用 ASM(或您选择的 BCI 框架)的单独 Java 程序。这并不快,但您只需要在每个仪器类中执行一次。

于 2013-05-29T02:24:35.523 回答