From 3e4a249dc0473e7ce3de92d63a610d3fcf56066e Mon Sep 17 00:00:00 2001 From: yoloyyh <1764163852@qq.com> Date: Tue, 28 Nov 2023 19:58:29 +0800 Subject: [PATCH] fix classname --- .../java/com/security/smith/SmithProbe.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/SmithProbe.java b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/SmithProbe.java index af97c30f9..fc305cd66 100644 --- a/rasp/jvm/JVMProbe/src/main/java/com/security/smith/SmithProbe.java +++ b/rasp/jvm/JVMProbe/src/main/java/com/security/smith/SmithProbe.java @@ -311,23 +311,14 @@ public void printClassfilter(ClassFilter data) { SmithLogger.logger.info("parentClassName:" + data.getParentClassName()); */ - System.out.println("------------------------------------------------------------------------"); - System.out.println("className:" + data.getClassName()); - System.out.println("classPath:" + data.getClassPath()); - System.out.println("interfaceName:" + data.getInterfacesName()); - System.out.println("classLoaderName:" + data.getClassLoaderName()); - System.out.println("parentClassName:" + data.getParentClassName()); - - // 步骤1:获取当前线程 - Thread currentThread = Thread.currentThread(); - - // 步骤2:获取当前线程的堆栈跟踪 - StackTraceElement[] stackTrace = currentThread.getStackTrace(); + SmithLogger.logger.info("------------------------------------------------------------------------"); + SmithLogger.logger.info("className:" + data.getClassName()); + SmithLogger.logger.info("classPath:" + data.getClassPath()); + SmithLogger.logger.info("interfaceName:" + data.getInterfacesName()); + SmithLogger.logger.info("classLoaderName:" + data.getClassLoaderName()); + SmithLogger.logger.info("parentClassName:" + data.getParentClassName()); + SmithLogger.logger.info("parentClassLoaderName:" + data.getParentClassLoaderName()); - // 步骤3:打印堆栈跟踪信息 - for (StackTraceElement element : stackTrace) { - System.out.println(element); - } } public InputStream byteArrayToInputStream(byte[] bytes) throws IOException { @@ -344,17 +335,17 @@ private void checkClassFilter(ClassLoader loader, String className, byte[] class CtClass ctClass = null; try { - if(className == null && classfileBuffer == null) { + if (className == null && classfileBuffer == null) { SmithLogger.logger.info("nononono className == null && classfileBuffer == null"); return ; } - String className_std; + String className_std = ""; ClassPool pool = ClassPool.getDefault(); - if(className != null) { - className_std = className.replace("/", "."); + if (className != null) { + className_std = className; if (className.startsWith("com/security/smith") || className.startsWith("rasp/")) { return ; } @@ -369,12 +360,15 @@ private void checkClassFilter(ClassLoader loader, String className, byte[] class ctClass = pool.makeClass(inputS); } - if(ctClass == null) { + if (ctClass == null) { return ; } else { className_std = ctClass.getName(); } + if (className_std != "") { + className_std = className_std.replace("/", "."); + } ClassFilter classFilter = new ClassFilter(); if (loader != null) { @@ -437,7 +431,7 @@ private void checkClassFilter(ClassLoader loader, String className, byte[] class @Override public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) { - if (disable) + if (disable) return null; if(scanswitch) {