gpt4 book ai didi

java - 如何动态反编译内存中的类对象?

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:32 25 4
gpt4 key购买 nike

我正在制作一个工具来动态显示正在运行的 java 类的源代码。我需要一个工具来帮助我将源代码的 Class Object 动态反编译为 String。我知道一些反编译工具,如 Jad、DJ 反编译器可以反编译 .class 文件,但我希望有一个工具可以:

Class<?> c = ..; // get from runtime environment
String sourcecode = **DecompileTool**.decompileClassObject(c);
return sourcecode;

我需要这样一个DecompileTool,有人知道吗?谢谢

最佳答案

我不知道有任何反编译器可以像那样使用。

事实上,在一般情况下不可能实现这样工作的反编译器:

  • Class<?>您从运行时获取的对象不提供任何获取字节码的方法。

  • 为了掌握字节码,您需要重做类加载器在类路径中找到“.class”文件时所做的操作。

  • 我认为没有办法找出正在使用的类加载器……如果您包括动态实例化类加载器的可能性。 (并且这样的类加载器是(例如)网络容器中的正常做法。)

  • 在一般情况下,如果不进行逆向工程并将相同的逻辑硬编码到反编译器适配器代码中,类加载器将以您无法重现的方式执行此操作。

此外,即时执行此操作可能毫无意义,因为反编译器很可能会生成不可编译的源代码。

关于java - 如何动态反编译内存中的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287513/

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