BTrace系列之四:破解案例
/* BTrace Script Template */import com.sun.btrace.annotations.*;import static com.sun.btrace.BTraceUtils.*;@BTracepublic class TracingScript {/* put your code here */ @OnMethod(clazz="+java.lang.Object", method="/.*/", location=@Location(value=Kind.CALL, clazz="java.lang.System", method="exit")) public static void trace(@ProbeClassName String className, @ProbeMethodName String methodName) { println("*****************************************"); print(className); println(Strings.strcat(".", methodName));}
static void B(String paramString) { if (N) return; N = true; SwingUtilities.invokeLater(new Runnable(paramString) { public void run() { JOptionPane.showMessageDialog(null, C.this + ", System will exit."); System.exit(0); } }); }
发现是这个方法调用的System.exit(0),接下来就很简单了,只要将该class修改后替换原来的class文件即可。