问题标签 [java-bytecode-asm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
184 浏览

java - 如何使用 ASM 库将二进制指令映射回语句或表达式?

我正在尝试将 java 字节码解析为中间数据结构以供以后使用。我偶然发现了 ASM。它功能强大且稳定。但是,我很难将二进制指令转换回普通的 java 表达式和语句。有人可以为我指出一个方向吗?

交易数据结构可能如下所示:

基本上它只不过是java语言的抽象。

谢谢你。

0 投票
3 回答
1206 浏览

java - Java:来自字节码的新实例

我想从bytes数组创建新的类实例。我该怎么做呢?有可能吗?

0 投票
2 回答
1743 浏览

java - java局部变量-如何使用其索引获取变量名称或类型

我正在使用 asm 仪器库。使用 visitVarInsn 我得到一个局部变量的索引。我想使用该索引并接收更多有用的信息,例如变量的名称和类型。你知道怎么做吗?谢谢。

0 投票
2 回答
530 浏览

java - 使用 ASM 访问阵列访问

我想知道是否可以使用 ASM API 跟踪对数组的访问。

我的目标是确定访问数组的哪个索引,以及何时访问(这部分很容易 - 使用System.NanoTime())。我只是找不到确定正在访问哪个索引的方法。

我一直在尝试使用以下那些没有任何成功 - visitFieldInsn(对于类的静态和非静态变量),visitVarInsn(对于静态和非静态局部变量),以及visitMultiANewArrayInsn- 它并没有真正识别任何数组。

0 投票
1 回答
2170 浏览

java - java.lang.VerifyError: (class: Main, method: main signature: ([Ljava/lang/String;)V) 堆栈大小太大

我一直在研究 ASM 库。首先,我编写了一个程序来构建一个 hello world 类,然后我想我会尝试一些更复杂的东西,构建一个创建 PythonInterpreter(Jython 库的一部分)并执行 python 文件的类。结果如下,不幸的是,当我尝试执行生成的类时,我得到了我命名这个问题的异常。

}

0 投票
1 回答
362 浏览

java - 使用 asm Instrumantation 测量 java 程序运行时

我想知道是否有一种方法可以使用 asm 的 java 字节码检测来测量给定的字节码(类文件,在原始代码中具有 main 函数)运行时。

测量应该尽可能准确,如果可能的话,以纳秒为单位。

谢谢

0 投票
2 回答
865 浏览

java - ASM:有状态的转换

我想编写一个 MethodVisitor 来转换用于乘法的 LDC 指令。

示例字节码:

这基本上推动了一个常数,然后将其相乘。

它必须是有状态的转换,因为我首先必须检查它是否用于乘法,如果是,我需要返回到 ldc 指令并修改常量。我不完全确定该怎么做,也不知道如何修改常量(当我尝试传递不同的值时,旧值仍保留在常量池中)。

编辑:

这就是我所拥有的,但它不会删除常量池中的旧值,并且可能存在错误。

0 投票
1 回答
962 浏览

java - 使用 java asm 库检测“导入”

我正在使用 asm 库进行 java 检测,我想检测“导入”指令。这样通过使用 visitMethodInsn 和 INVOKEVIRTUAL 我就可以从我的包中调用一个函数。我知道当我有一个字节码时,链接阶段就结束了,所以我这样做可能会遇到麻烦。任何解决方案/绕路?

0 投票
3 回答
864 浏览

javascript - 是否有用 javascript 实现的 Java 字节码阅读器?

我知道有很多库可以读取用 Java 编写的字节码。有人知道用 Javascript 实现的字节码库吗?

0 投票
2 回答
901 浏览

java - 追溯主动向方法添加 Java 注释?

有没有办法修改 .class 文件以便为某些方法添加 Java 注释?基本上我想遍历jar文件中每个类文件的方法并注释某些。请注意,这不是在运行时使用 jar 文件。相反,在我完成后,我想修改带有注释的类文件。

我确实可以访问源代码,所以如果有一个自动源代码修改器,那也可以......

我假设我需要一个工具,例如JavassistASM。如果是这样,我应该使用哪一个,我将如何去做?