0

可以将 URLClassLoader 中的类保存到普通的 file.class 吗?然后反编译?

我尝试将其保存为对象

        Class<?> clazz = classLoader.loadClass("foo.Bar");
        FileOutputStream sf = new FileOutputStream(f);
        ObjectOutputStream s = new ObjectOutputStream(sf);
        s.writeObject(clazz);
        s.close();

但是那行不通。

那么...如何反编译呢?我需要得到类似 jd-gui 的结果,但使用来自 URLClassLoader 的类。

4

2 回答 2

2

您需要将类名(例如"foo.Bar")映射到资源路径名(例如"/foo/Bar.class"),然后用于classLoader.getResourceAsStream打开流以读取字节码文件。

从理论上讲,然后可以将其提供给反编译器……假设您有一个可以从InputStream.


您目前正在做的事情失败了,因为Class无法序列化对象。

于 2014-03-06T14:11:24.270 回答
0

执行简单的 HTTP 下载,而不是 URLClassLoader,将类放入文件中。然后反编译。

(将对象写入 ObjectOutputStream 只会将数据保存在对象的实例中,即使该对象已实现 Serializable 也有效。不是您在此处查找的内容。)

于 2014-03-06T14:11:15.163 回答