feat: 策略hook增加每个类匹配策略命中的情况日志打印以便观测排查问题 by CC11001100 · Pull Request #593 · HXSecurity/DongTai-agent-java

Expand Up @@ -9,11 +9,15 @@ import io.dongtai.iast.core.handler.hookpoint.models.policy.PolicyNode; import io.dongtai.iast.core.utils.AsmUtils; import io.dongtai.log.DongTaiLog; import org.objectweb.asm.*; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; import org.objectweb.asm.commons.JSRInlinerAdapter;
import java.lang.reflect.Modifier; import java.util.*; import java.util.HashSet; import java.util.Map; import java.util.Set;
/** * @author dongzhiyong@huoxian.cn Expand All @@ -29,11 +33,14 @@ public DispatchClassPlugin() { public ClassVisitor dispatch(ClassVisitor classVisitor, ClassContext classContext, Policy policy) { ancestors = classContext.getAncestors(); className = classContext.getClassName(); Set<String> matchedClassNameSet = policy.getMatchedClass(classContext,className, ancestors); Set<String> matchedClassNameSet = policy.getMatchedClass(classContext, className, ancestors);
// 匹配的时候增加日志方便根据类或者策略观测定位问题 if (0 == matchedClassNameSet.size()) { DongTaiLog.trace("class = {}, no matching policy, so ignored.", classContext.getClassName()); return classVisitor; } DongTaiLog.trace("class = {}, matching policy classes = {}", classContext.getClassName(), String.join(", ", matchedClassNameSet));
classContext.setMatchedClassSet(matchedClassNameSet); return new ClassVisit(classVisitor, classContext, policy); Expand Down