反汇编/反编译任意JVM字节码

逆向工程 拆卸 反编译 爪哇 字节码
2021-07-09 14:52:38

我有一个混淆的 java 二进制文件,它使用这样的 java 反射进行运行时代码注入。

Object o = "a long string";
((Method)o).invoke(params..);

(如果我把它写在一个 java 文件中,它会编译得很好,但我必须编辑类文件的反汇编并删除 checkcast 指令以使其运行。)

我想要做的是将长字符串的内容反汇编/反编译为 JVM 字节码。由于这不是一个完整的类,而只是一个方法,因此我无法使用任何可用的 Java 逆向工程工具来使用它。

我现在试图在运行时将此代码注入到一个单独的类中,然后将其从内存中转储出来。但我不确定是否有可能做到。即使使用javaagent。

有没有其他简单的方法来完成我想要做的事情?

1个回答

谈论“仅用于方法的字节码”是没有意义的,因为 Java 字节码不能孤立运行。这些指令包含对常量池的引用,它是类文件的一部分,并在类中的所有方法之间共享。字节码的最小可执行单元是类文件。

所写的问题没有意义,但如果您发布您正在处理的实际数据,也许我们可以弄清楚发生了什么。