Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.lang.instrument.ClassFileTransformer;
- import java.lang.instrument.IllegalClassFormatException;
- import java.lang.instrument.Instrumentation;
- import java.security.ProtectionDomain;
- import org.objectweb.asm.ClassAdapter;
- import org.objectweb.asm.ClassReader;
- import org.objectweb.asm.ClassVisitor;
- import org.objectweb.asm.ClassWriter;
- import org.objectweb.asm.Label;
- import org.objectweb.asm.MethodAdapter;
- import org.objectweb.asm.MethodVisitor;
- public class Agent {
- private static class SocketTransformer implements ClassFileTransformer {
- private static class RemapMethodVisitor extends MethodAdapter {
- public RemapMethodVisitor(MethodVisitor mv) {
- super(mv);
- }
- @Override
- public void visitLocalVariable(String name, String desc, String signature,
- Label start, Label end, int index) {
- System.out.println("Visiting local var "+name);
- mv.visitLocalVariable(name, desc, signature, start, end, index);
- }
- @Override
- public void visitMethodInsn(int opcode, String owner, String name,
- String desc) {
- System.out.println("Visiting method insn "+name);
- mv.visitMethodInsn(opcode, owner, name, desc);
- }
- @Override
- public void visitTypeInsn(int opcode, String type) {
- System.out.println("Visiting type insn "+type);
- mv.visitTypeInsn(opcode, type);
- }
- @Override
- public void visitVarInsn(int opcode, int var) {
- System.out.println("Visiting var insn " + var);
- mv.visitVarInsn(opcode, var);
- }
- }
- private static class RemapAdapter extends ClassAdapter {
- public RemapAdapter(ClassVisitor cv) {
- super(cv);
- }
- public MethodVisitor visitMethod(int access, String name,
- String desc, String signature, String [] exceptions) {
- MethodVisitor mv = cv.visitMethod(access, name, desc, signature, exceptions);
- if(null != mv) return new RemapMethodVisitor(mv);
- return mv;
- }
- }
- public byte[] transform(ClassLoader arg0, String arg1, Class<?> arg2,
- ProtectionDomain arg3, byte[] bytes)
- throws IllegalClassFormatException {
- try {
- byte [] b = bytes.clone();
- ClassReader reader = new ClassReader(b);
- ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
- reader.accept(new RemapAdapter(writer), 1);
- b = writer.toByteArray();
- return b;
- } catch(Throwable t) {
- System.out.println("Exception");
- t.printStackTrace();
- }
- return bytes;
- }
- }
- public static void premain(String args, Instrumentation ins) {
- ins.addTransformer(new SocketTransformer());
- }
- public static void main(String[] args) {
- String hello = "hello";
- System.out.println(hello);
- }
- }
- /* ERROR LOG
- #
- # An unexpected error has been detected by HotSpot Virtual Machine:
- #
- # EXCEPTION_PRIV_INSTRUCTION (0xc0000096) at pc=0x009a2571, pid=3380, tid=3384
- #
- # Java VM: Java HotSpot(TM) Client VM (1.5.0_09-b03 mixed mode)
- # Problematic frame:
- # j java.lang.Shutdown.<clinit>()V+0
- #
- --------------- T H R E A D ---------------
- Current thread (0x00375f10): JavaThread "DestroyJavaVM" [_thread_in_Java, id=3384]
- siginfo: ExceptionCode=0xc0000096
- Registers:
- EAX=0xffffffff, EBX=0x000000b0, ECX=0x00374ab0, EDX=0x00000000
- ESP=0x0006f8a0, EBP=0x0006f8ec, ESI=0x06beede8, EDI=0x0006f8f0
- EIP=0x009a2571, EFLAGS=0x00010212
- Top of Stack: (sp=0x0006f8a0)
- 0x0006f8a0: 0006f8f0 06beede8 0006f8ec 0006f8c0
- 0x0006f8b0: 000000b0 06beeff0 00000009 0006f8f0
- 0x0006f8c0: 009a256b 6d884f98 0006fb14 00000000
- 0x0006f8d0: 0006f8d0 06beede0 0006f8f0 06beeff0
- 0x0006f8e0: 00000000 06beede0 0006f8f4 0006f904
- 0x0006f8f0: 009a0215 00375f10 06beede0 00375f10
- 0x0006f900: 009a01e5 0006f980 6d7b6e84 0006f938
- 0x0006f910: 0006fa64 0000000a 06beede0 009a75d0
- Instructions: (pc=0x009a2571)
- 0x009a2561: 68 98 4f 88 6d e8 00 00 00 00 60 e8 c2 7d d9 6c
- 0x009a2571: f4 90 90 00 00 00 00 00 00 00 00 00 00 00 00 80
- Stack: [0x00030000,0x00070000), sp=0x0006f8a0, free space=254k
- Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
- j java.lang.Shutdown.<clinit>()V+0
- v ~StubRoutines::call_stub
- V [jvm.dll+0x86e84]
- V [jvm.dll+0xddead]
- V [jvm.dll+0x86d55]
- V [jvm.dll+0x79481]
- V [jvm.dll+0x78364]
- V [jvm.dll+0xc94a9]
- V [jvm.dll+0x86c7a]
- V [jvm.dll+0x86cbe]
- V [jvm.dll+0x1117f1]
- V [jvm.dll+0x11189c]
- V [jvm.dll+0x917dc]
- C [javaw.exe+0x1508]
- C [javaw.exe+0x3151]
- C [kernel32.dll+0x17067]
- --------------- P R O C E S S ---------------
- Java Threads: ( => current thread )
- =>0x00375f10 JavaThread "DestroyJavaVM" [_thread_in_Java, id=3384]
- 0x0097a2d0 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3436]
- 0x00974950 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3396]
- 0x00974798 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3416]
- 0x00959b80 JavaThread "Finalizer" daemon [_thread_blocked, id=3420]
- 0x00958718 JavaThread "Reference Handler" daemon [_thread_blocked, id=3424]
- Other Threads:
- 0x00955c50 VMThread [id=3428]
- 0x00962c20 WatcherThread [id=3412]
- VM state:not at safepoint (normal execution)
- VM Mutex/Monitor currently owned by a thread: None
- Heap
- def new generation total 576K, used 539K [0x02a20000, 0x02ac0000, 0x02f00000)
- eden space 512K, 92% used [0x02a20000, 0x02a96e68, 0x02aa0000)
- from space 64K, 99% used [0x02ab0000, 0x02abfff8, 0x02ac0000)
- to space 64K, 0% used [0x02aa0000, 0x02aa0000, 0x02ab0000)
- tenured generation total 1408K, used 59K [0x02f00000, 0x03060000, 0x06a20000)
- the space 1408K, 4% used [0x02f00000, 0x02f0ed90, 0x02f0ee00, 0x03060000)
- compacting perm gen total 8192K, used 1852K [0x06a20000, 0x07220000, 0x0aa20000)
- the space 8192K, 22% used [0x06a20000, 0x06bef000, 0x06bef000, 0x07220000)
- No shared spaces configured.
- Dynamic libraries:
- 0x00400000 - 0x0040d000 C:\Sun\SDK\jdk\bin\javaw.exe
- 0x7c900000 - 0x7c9af000 C:\WINDOWS\system32\ntdll.dll
- 0x7c800000 - 0x7c8f6000 C:\WINDOWS\system32\kernel32.dll
- 0x77dd0000 - 0x77e6b000 C:\WINDOWS\system32\ADVAPI32.dll
- 0x77e70000 - 0x77f02000 C:\WINDOWS\system32\RPCRT4.dll
- 0x77fe0000 - 0x77ff1000 C:\WINDOWS\system32\Secur32.dll
- 0x7e410000 - 0x7e4a1000 C:\WINDOWS\system32\USER32.dll
- 0x77f10000 - 0x77f59000 C:\WINDOWS\system32\GDI32.dll
- 0x77c10000 - 0x77c68000 C:\WINDOWS\system32\MSVCRT.dll
- 0x76390000 - 0x763ad000 C:\WINDOWS\system32\IMM32.DLL
- 0x629c0000 - 0x629c9000 C:\WINDOWS\system32\LPK.DLL
- 0x74d90000 - 0x74dfb000 C:\WINDOWS\system32\USP10.dll
- 0x6d730000 - 0x6d8cb000 C:\Sun\SDK\jdk\jre\bin\client\jvm.dll
- 0x76b40000 - 0x76b6d000 C:\WINDOWS\system32\WINMM.dll
- 0x6d2f0000 - 0x6d2f8000 C:\Sun\SDK\jdk\jre\bin\hpi.dll
- 0x76bf0000 - 0x76bfb000 C:\WINDOWS\system32\PSAPI.DLL
- 0x6d320000 - 0x6d32e000 C:\Sun\SDK\jdk\jre\bin\instrument.dll
- 0x6d700000 - 0x6d70c000 C:\Sun\SDK\jdk\jre\bin\verify.dll
- 0x6d370000 - 0x6d38d000 C:\Sun\SDK\jdk\jre\bin\java.dll
- 0x6d720000 - 0x6d72f000 C:\Sun\SDK\jdk\jre\bin\zip.dll
- VM Arguments:
- jvm_args: -javaagent:agent.jar -Dfile.encoding=Cp1252
- java_command: Agent
- Launcher Type: SUN_STANDARD
- Environment Variables:
- PATH=C:/Sun/SDK/jdk/bin/../jre/bin/client;C:/Sun/SDK/jdk/bin/../jre/bin;C:/Sun/SDK/jdk/bin/../jre/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Sun\SDK\bin;C:\Sun\SDK\jdk\bin;C:\Documents and Settings\DIGIT\Desktop\eclipse;
- USERNAME=DIGIT
- OS=Windows_NT
- PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel
- --------------- S Y S T E M ---------------
- OS: Windows XP Build 2600 Service Pack 3
- CPU:total 1 (cores per cpu 2, threads per core 1) family 6 model 7 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2
- Memory: 4k page, physical 2096624k(1535888k free), swap 4038728k(3663912k free)
- vm_info: Java HotSpot(TM) Client VM (1.5.0_09-b03) for windows-x86, built on Oct 12 2006 01:20:10 by "java_re" with MS VC++ 6.0
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement