如何将内存中的Java类转储为.class文件?

时间:2014-11-05 16:52:22

标签: java .class-file

我有一个混淆的Java jar文件,可以在JVM中运行时动态解密。如果没有外部代理,我如何从JVM内存中获取一个简单的类,并创建一个.class文件?

我已经尝试过使用java.lang.instrument代理的方法,如下所述: Retrieving .class files from a running app

导致异常

com.sun.tools.attach.AgentInitializationException: 
    Agent JAR loaded but agent failed to initialize
    at sun.tools.attach.HotSpotVirtualMachine.loadAgent(HotSpotVirtualMachine.java:121)

我正在使用JDK8。

我不知道.class文件是否只是Class对象的序列化,我猜不是(它的字节码)。

1 个答案:

答案 0 :(得分:0)

try {
    InputStream fin = Foo.class.getClassLoader().getResourceAsStream("Foo.class");
    Files.copy(fin, Paths.get("./Foo.class"));
} catch (Exception e) {
    e.printStackTrace();
}