Files
2019-05-22 19:52:22 +08:00

40 lines
1.2 KiB
Java

import java.lang.instrument.*;
import java.io.*;
import java.security.*;
import org.apache.bcel.classfile.*;
import org.apache.bcel.generic.*;
/**
* @version 1.00 2004-08-17
* @author Cay Horstmann
*/
public class EntryLoggingAgent
{
public static void premain(final String arg, Instrumentation instr)
{
instr.addTransformer(new ClassFileTransformer()
{
public byte[] transform(ClassLoader loader, String className, Class<?> cl,
ProtectionDomain pd, byte[] data)
{
if (!className.equals(arg)) return null;
try
{
ClassParser parser = new ClassParser(new ByteArrayInputStream(data), className
+ ".java");
JavaClass jc = parser.parse();
ClassGen cg = new ClassGen(jc);
EntryLogger el = new EntryLogger(cg);
el.convert();
return cg.getJavaClass().getBytes();
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
});
}
}