微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐