ASM是一个用于JVM字节码操作和创建的Java库。
使用 ASM 动态检测 Java 类时出现“LinkageError:尝试重复的类定义”
我自己写了一个javaagent,用ASM动态检测java类(我没有使用ASM的COMPUTE_MAXS或COMPUTE_FRAMES,我自己手动完成)。其实我只是...
Java字节码生成,嵌套循环 - 分支目标 114 处的堆栈图帧不一致
我正在玩Java字节码生成(使用Clojure和https://github.com/jgpc42/insn),目前我正在尝试为嵌套for循环生成字节码,下面是
使用自定义 Java 代理 jar 启动 Spring boot 项目会出现错误
如下图,JVM选项中添加自定义Java代理包 -javaagent:/usr/local/maven/apache-maven-3.6.3/repository/com/graviton/Probe-Agent/1.0-SNAPSHOT/Probe-Agent...
Java ClassFileTransformer 失败抛出异常
我有代码尝试使用 ClassFileTransformer 和 Instrumentation 实例在运行时重新定义类。 但是,我注意到 ClassFileTransformer 的转换方法失败了...
我正在为大学写一篇学期论文。任务是编写两个程序,其中一个收集一些信息,用数字密钥对其进行签名,并将加密后的数据和密钥保存到sep...
我发现了一些示例,这些示例向我展示了使用 MethodAdapter 进行某些方法调用的位置: 公共无效访问方法Insn(int操作码,字符串所有者,字符串名称,字符串描述){ 如果(所有者.e...
如何根据方法混合手动和自动计算 ASM 中的最大局部变量、最大堆栈和帧?
我目前正在开发一个项目,在该项目中,我使用 ASM 库从我自己的中间表示生成 Java 字节码。对于我的代码中的某些方法,我已经预先计算了值......
看来ASM ClassWriter并没有保留常量池中条目的顺序。例如,考虑以下代码片段: @测试 void hashShouldBeSame() 抛出 IOException,
我目前正在尝试编辑 JVM 加载的 java 类的字节码。 我使用 Java 8 和 ASM 5.0.3。 我无法更改命令行或 JVM 参数。 这是一个最小的前...
我的目标是转换这个类 公共 C 类 { 公共静态无效打印(int i){ System.out.println(i); } } 进入此类,然后使用此序列调用 print() 方法 C.
例如:我想在非生产环境下更改 LocalDateTime.now() 返回结果, 我尝试调用以下代码,但出现错误: @测试 公共无效测试3(){ ...
我正在透明肮脏检测代理(tdd-agent)工作。重新定义目标类来实现 setDirty()/isDirty() 并在检测到 putfield 时设置它,效果非常好,但我...
如何让 org.objectweb.asm.util.CheckClassAdapter 抛出异常而不是将错误打印到 stderr?
我目前正在使用 org.objectweb.asm.util.CheckClassAdapter 在我的 Java 项目中进行字节码验证。但是,我观察到此类将错误打印到 stderr 而不是抛出
在JVM上,有没有一种方法可以在不使用分支指令的情况下计算两个整数是否相同?有没有办法巧妙地使用 ixor 指令来做到这一点?如果有办法的话,是不是...
公共类 TestException 扩展了 Exception { 公共 TestException(字符串消息){ super("这是消息:" + msg); } } 上述代码编译为: 公共类 TestExcep...
我发现了一个非常奇怪的 JAR 文件。它包含两个类。我尝试了我所知道的每一个反编译器,甚至包括 IntelliJ 的 Fernflower。他们都给了我这个结果:IntelliJ's decompiler的屏幕截图 ...
如何通过 ASM 或 Javassist 等 jar 获取 Java 方法的所有引用类?
如下代码所示: 公共类 Main 实现 MainInter{ public static void main(String[] args) { List s = new ArrayList<>(); DClassFather 变种 = 新
我有一个关于jasmin的iload指令的问题。 做 iload 1 是正确的还是必须是 iload_1? 或者什么时候是 1 到 3 之间的数字我们必须使用 '' 而其他我们必须不...
我正在尝试检查给定类中常量的使用次数。我的想法是先用ClassReader.accept(ClassVisitor, ...)来访问类,然后为每个声明一个methodVisitor
将 java 代理与可操纵的 java 字节码 (ASM) 结合使用
我在 A Guide to Java Bytecode Manipulation with ASM 的帮助下试图弄清楚 ASM 是如何工作的。我按照教程为 Integer 类创建了一个“额外”静态字段。这是...