问题标签 [bcel]

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 投票
1 回答
161 浏览

java - BCEL 传递“this”参数

我有

并且在 MainClass(.class 文件)中有aMethod

如何使用 Apache BCEL 做到这一点?非常感谢!

0 投票
1 回答
1320 浏览

java - 如何从java中的字节偏移量获取源代码的行号?

我正在操作一个 .class 文件。我正在使用InstrutionHandle包来一次获取一个说明。我通过getPosition()方法获得了指令的字节偏移量,我可以从字节偏移量中获取源行号吗?

0 投票
1 回答
614 浏览

java - Java BCEL 注入/替换出错

背景:我正在注入 Minecraft Launcher 以获取小程序(我已经完成了),但现在我希望通过我的类加载器加载 Minecraft 的文件。我找到了 GameUpdater.java(Minecraft 的游戏更新程序,也是客户端小程序的调度程序)的方法,并且在该方法下有一个名为“createApplet”的方法。

GameUpdater.java:

好的,很简单,将 classLoader.loadClass 替换为您自己的静态加载方法。所以,我尝试在我的类加载器中,这是我的转换代码:

然而,我倒在了我的脸上。这是更新后的 gameupdater.class(如您在上面看到的,我将其转储)

这是 GameUpdater 中 createApplet 方法的字节码图片 字节码信息

现在,我不知道该怎么做。如果有人能指出我正确的方向,那就太棒了!同时,我将继续尝试并阅读 bcel 文档。

如果您对更多代码等有任何疑问,请告诉我。

0 投票
0 回答
396 浏览

java - 字节码注入后Tomcat类加载异常

我将调用语句(cajolingMe.cajoleMe();)注入到webgoat的类之​​一(HammerHead.class)。这个方法是一个静态方法,从一个由fat-jar创建的 jar 文件中调用。
我将该 jar 复制到 [webgoat][3] Web 应用程序的 lib 目录。
当我反编译注入的类时没有问题并且语法是正确的。
(注入的代码加粗)

但是当我运行 tomcat 时,我看到了这个异常

而webgoat站点是 我用于注入的“HTTP Status 404” 。[BCEL][5]问题出在哪里?

0 投票
1 回答
4324 浏览

java - VerifyError:堆栈大小太大(这是什么意思?)

我对 Java 字节码还很陌生。我正在使用 BCEL 生成字节码,但是当我尝试使用生成的代码时收到一条错误消息。(事后看来,ObjectWeb ASM 似乎比 BCEL 更先进、更常用。)

这是错误消息:

这是方法:

据我了解,局部变量表是正确的,因为它与输入参数匹配。我没有添加“this”变量,因为该方法是静态的。

如果我没记错的话, lconst_0 将一个长值 0 加载到堆栈上,然后 lreturn 使用该值并返回它。

我究竟做错了什么?这里有足够的信息可以告诉吗?

谢谢!

0 投票
2 回答
1337 浏览

java - 使用 BCEL 跟踪 java 字节码中的每条指令

我正在使用 BCEL 生成字节码,我只想在输入类的静态方法中的每一行之前打印出 (println)。我尝试使用 BCEL 进行检测,但会导致不同形式的错误。它说

有时,如果我在任何指令上放置一些静态方法调用,它就会开始工作,有时它不会。任何帮助将非常感激...

更新:我修好了。这与 BCEL 库无关,它是 JDK 版本(1.7),它没有验证我的检测类。因此,如果有人遇到此类问题,请使用 JDK 1.6 或使用 JVM 选项“-XX:-UseSplitVerifier”。

干杯

0 投票
1 回答
145 浏览

java - 当对象状态改变时调用方法

我提供了一个注释@validateName,任何人都可以将其包含在他们的代码中。假设有人编码

然后他们可以调用NameValidator.validate(personObject)或一些类似的方法来验证该字段。

我想确保名称字段始终处于有效状态,即我想validate()在带注释的变量更改时自动调用该方法(无论它在类内部还是外部更改)。
我愿意编写一个挂钩到 Eclipse 并在编译阶段被调用的插件。请提供一些我可以开始寻找解决方案的指示。
(我想我必须实现某种 AOP 或者应该使用 BCEL 或其他东西修改字节码。我不确定,因为我没有尝试过两者。)

0 投票
0 回答
157 浏览

java - 使用 bcel 将内部类移动到另一个外部类

我想将内部类从外部类移动到另一个外部类。是否可以使用bcel来做到这一点?例如:

将转换为:

谢谢。

0 投票
2 回答
1045 浏览

java - 我在哪里可以找到 BCEL 6.0 以及如何修改它添加补丁?

我用于我的项目 BCEL-5.2,几个月后我意识到它不包含局部变量类型表的类。我看到它存在于 BCEL-6.0 中,并且我还发现了一个可以应用的补丁。

我在哪里可以找到这个库的源代码?

有人知道添加补丁后如何获取库吗?

0 投票
1 回答
450 浏览

java - 如何使用 BCEL 更改静态字段的值?

例如,我想使用 BCEL 重置静态字段

myValue = 2. 无法使用其他字节码库,例如 ASM。