我正在尝试使用 Java Asm 库生成 Java 字节码(我基本上是在尝试创建另一种 JVM 编程语言) 这是我正在编译的代码 如您所见,语法与 Java 非常相似println只是对System.out.println的调用。 当我使用我的编译器时,它会生成以下代码(使用 javap 得到这个 ...
我正在尝试使用 Java Asm 库生成 Java 字节码(我基本上是在尝试创建另一种 JVM 编程语言) 这是我正在编译的代码 如您所见,语法与 Java 非常相似println只是对System.out.println的调用。 当我使用我的编译器时,它会生成以下代码(使用 javap 得到这个 ...
我正在使用 Spring Boot 2.7.5 和 Hibernate 5.6.12.Final 并在构建时通过hibernate-enhance-maven-plugin应用字节码增强。 它工作得很好,可以防止急切地获取@OneToOne关系,如此处所述https://vladmihalcea.c ...
我试图在 python 中创建一个字节码 VM,只是为了好玩,作为一个爱好项目,但我有一个问题,我如何编码 json 文件,如下所示:{ "code": [["0xf2", "Hello"], ["0xf3", 1]], "constants": [] } 转换成某种文件格式,比如加密,但在某 ...
我想使用自定义testInstrumentationRunner来覆盖newInstance方法,以便使用自定义应用程序: 实际上需要该应用程序才能使测试执行工作(因为它在启动时跳过了一些 GDPR 对话框等): 如您所见,我需要从AllureAndroidJUnitRunner TestJ ...
我正在构建一个应该使用 ASM 库操作字节码的 Java 代理。 我需要在具体方法的开头添加说明。 我设法通过创建以下代理来做到这一点: 无论如何,这与 Java 完美配合,但我在 Scala 中有一些奇怪的问题。 如果我在 Scala 中有以下代码,一切正常,我会从move方法中收到一条 ...
我正在尝试为 .pyc 文件制作解码器,并且需要弄清楚结构是如何的。 我找到了几个建议,但它们都使用 marshal 模块加载代码然后反汇编它。 我发现了一些对一般结构的简单解释,这些解释使我构建了一个简单的反编译器。 最好的帖子是: 如何在 python 中创建代码对象? 但是,我需要更直接 ...
我正在使用 ByteBuddy API 编写一个 Java 代理。因此,我想了解使用 Bytebuddy DSL 的重新转换功能已经加载的类的方法委托。 当我使用-javaagent参数启动应用程序时,一切正常,控制台 output 被更改,但是在运行时附加 java 代理时,执行 agentmai ...
我目前正在处理 Java 库,我想使用字节码操作添加一些public static final String字段,这些字段只包含有关实体的一些信息。 例如Customer.TABLE_NAME 。 我希望能够在编译时间之前访问这些字段,同时编写类似于 lombok 允许您执行的代码。 显然,在编译代 ...
我正在尝试为一种编译为 Java 字节码的深奥编程语言编写编译器。 我正在尝试使用 Javassist 生成字节码。 我在尝试生成分支/循环代码时卡住了。 例如,假设我正在为以下内容生成代码: 这是我的尝试: 通过检查 class 文件,我可以看到生成了预期的字节码: 但是,当使用java Mai ...
我有一个 .class 文件,该文件是使用 ASM 核心 API 按以下方式生成的: 最后的方法只是检查目录并将.class文件写入其中。 稍后当我想向我正在使用的 class 添加一些东西时: 当我尝试使用 ClassLoader 读取 Class 时出现问题: 上面的代码给出了一个错误: 但是 ...
我正在使用 java 模块系统测试一些字节码生成库。 我编译了 java 11,对 java.base module-info.java 进行了以下更改: 然后我使用“--illegal-access=deny”选项启动 java。 当我将这个已编译的 java 版本与 javassist 库一起 ...
我有一个 java class,我想在每个 finally 块中添加一些自定义指令。 我试过使用 Java ASM 库。 我尝试迭代每个方法,然后迭代每个 TryCatchBlockNode 并获取句柄 label 并在其中插入指令。 如何在每个 finally 块中插入一些自定义代码? 编辑:上面 ...
我想生成 class 的字节码,它将方法引用作为参数传递给另一个方法。 例如: 使用 ByteBuddy 我可以使用自定义构造函数生成 class ,并创建一个InvokeDynamic来表示Test::getId ,但问题是我无法将InvokeDynamic作为参数传递给我的MethodCall ...
语境我正在使用 ByteBuddy 实现字节码转换,并且操作过程是一个多步骤过程。 因此,操纵必须能够: 扩充原有的方法完全创建新方法扩充通过 2 引入的方法。 对于 1. 我使用了通过以下方式应用的@OnMethodExit建议: 使用Helper方法的扩充代码(有效地设置字段的值)。 创建新方 ...
在阅读dagger-hilt的文档时,我遇到了这样一个术语“字节码转换”。 什么是字节码转换? 完整的句子 Hilt Gradle 插件运行字节码转换以使 API 更易于使用。 使用字节码转换有什么好处? ...
我有一个简单的Scala function ,我想在每次执行语句时增加一个 class 变量。 我希望 function 是这样的: 但是在软件级别这样做会使代码变得混乱。 我可以使用字节码操作来实现这一点,还是应该干预其他级别的编译? ...
Java asm - 如何创建 class 的克隆,仅更改 class 名称? 我知道有一种简单的方法可以使用 asm SimpleRemapper修改 class 名称,但我只想更改外部 class 名称而不修改方法中使用的 class 名称。 (请看下面的例子) 基本上如果我有一个目标 c ...
我将我的 Java 代理动态附加到检测代码的 java 进程。 基本上,它在每个方法的开始处添加了一个 static 调用: AgentClass位于代理的.jar中。 但是在检测之后,进程开始执行新代码并抛出NoClassDefFoundError ,它找不到AgentClass 。 我试图以 ...
我正在使用 ASM(也使用树和实用程序)并且遇到了一个奇怪的异常 我正在尝试编辑 a.class 文件的字节码,以生成一个新文件。 我有一个 for 循环,里面有一些 if 分支,我尝试修改它。 我在两个 for 循环的代码下方发布了初始循环和所需生成的循环。 最初的 期望的 为了做到这一点,我使 ...
前言我一直在尝试使用 ByteBuddy 和 ASM,但我仍然是 ASM 的初学者,介于 ByteBuddy 的初学者和高级之间。 这个问题一般是关于 ByteBuddy 和关于 JVM 字节码限制的。 情况我的想法是通过检测构造函数来创建用于测试的全局模拟,以便在每个构造函数的开头插入如下指令: ...