gpt4 book ai didi

java反汇编重新组装

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:46 26 4
gpt4 key购买 nike

假设我想获取一个 java 类文件,反汇编它,调整 java 字节码输出,然后再次重新组装它。

我需要重命名常量池表中的一个符号。我也无权访问源代码,使用反编译器似乎有点矫枉过正。我没有尝试优化任何东西 - Java 在这方面做得很好。

是否有……一种简单的方法来做到这一点?我找到了几种用于拆卸或重新组装的工具,但两者都没有;或者没有成对的工具似乎使用相同的格式来表示文本中的字节码。

最佳答案

你检查过ASM了吗? API?

这是一个代码示例(改编自官方文档),解释了如何修改类字节码:

ClasssWriter cw = new ClassWriter();
ClassAdapter ca = new ClassAdapter(cw); // ca forwards all events to cw
// ca should modify the class data
ClassReader cr = new ClassReader("MyClass");
cr.accept(ca, 0);
byte[] b2 = cw.toByteArray(); // b2 represents the same class as MyClass, modified by ca

然后b2可以存储在.class文件中以备后用。如果您定义自己的类加载器,也可以使用方法 ClassLoader.defineClass(String,byte[],int,int) 来加载它。

关于java反汇编重新组装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com