我正在制作一个工具来动态显示运行java类的源代码.我需要一个工具来帮助我从一个动态编译Class Object到String源代码的.我知道一些反编译工具,如Jad,DJ反编译器可以反编译.class文件,但我希望工具可以:
Class<?> c = ..; // get from runtime environment
String sourcecode = **DecompileTool**.decompileClassObject(c);
return sourcecode;
Run Code Online (Sandbox Code Playgroud)
我需要这样一个DecompileTool,有谁知道?谢谢
我不知道有任何反编译器可以这样使用。
事实上,在一般情况下,不可能实现这样工作的反编译器:
从运行时获取的对象Class<?>不提供任何获取字节码的方法。
为了获取字节码,您需要重做类加载器在从类路径中找到“.class”文件时所做的操作。
我认为没有办法找出正在使用的类加载器......如果您包含动态实例化类加载器的可能性。(这样的类加载器是(例如)Web 容器中的常见做法。)
在一般情况下,类加载器将以您无法重现的方式执行此操作...无需进行逆向工程并将相同的逻辑硬编码到反编译器适配器代码中。
此外,即时执行此操作可能毫无意义,因为反编译器很有可能会生成不可编译的源代码。
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |