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

我正在制作一个工具来动态显示运行java类的源代码.我需要一个工具来帮助我从类对象动态反编译到源代码的字符串.我知道一些反编译工具,如Jad,DJ反编译器可以反编译.class文件,但我希望工具可以:

Classetool**.decompileClassObject(c);
return sourcecode;

我需要这样一个Decompiletool,有谁知道?谢谢

最佳答案
我不知道任何可以像这样使用的反编译器.

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

>班级<?>从运行时获得的对象不提供任何获取字节码的方法.
>为了获取字节码,您需要重做类加载器在从类路径中找到“.class”文件时所执行的操作.
>我认为没有办法找出正在使用的类加载器…如果包含动态实例化类加载器的可能性. (此类类加载器在(例如)Web容器中是常规做法.)
>在一般情况下,类加载器将以您无法重现的方式执行此操作…无需逆向工程并将相同的逻辑硬编码到您的反编译器适配器代码中.

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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...