@@ -62,6 +62,13 @@ public static IastClassFileTransformer getInstance(Instrumentation inst, PolicyM
6262 return INSTANCE ;
6363 }
6464
65+ public static IastClassFileTransformer getInstance () {
66+ if (null != INSTANCE ) {
67+ return INSTANCE ;
68+ }
69+ return null ;
70+ }
71+
6572 IastClassFileTransformer (Instrumentation inst , PolicyManager policyManager ) {
6673 this .inst = inst ;
6774 this .isDumpClass = EngineManager .getInstance ().isEnableDumpClass ();
@@ -112,29 +119,39 @@ public byte[] transform(final ClassLoader loader,
112119 final Class <?> classBeingRedefined ,
113120 final ProtectionDomain protectionDomain ,
114121 final byte [] srcByteCodeArray ) {
122+ String threadName = Thread .currentThread ().getName ();
123+ if (threadName .startsWith ("DongTai-IAST-Core" )
124+ || threadName .startsWith ("DongTai-IAST-AgentStateMonitor" )
125+ || threadName .startsWith ("DongTai-IAST-ConfigMonitor" )
126+ || threadName .startsWith ("DongTai-IAST-FallbackConfigMonitor" )
127+ || threadName .startsWith ("DongTai-IAST-HearBeatMonitor" )
128+ || threadName .startsWith ("DongTai-IAST-PerformanceMonitor" )) {
129+ return null ;
130+ }
131+
132+ if (internalClassName == null
133+ || internalClassName .startsWith ("io/dongtai/" )
134+ || internalClassName .startsWith ("com/secnium/iast/" )
135+ || internalClassName .startsWith ("java/lang/iast/" )
136+ || internalClassName .startsWith ("cn/huoxian/iast/" )
137+ || internalClassName .startsWith ("META-INF/" )
138+ || "module-info" .equals (internalClassName )) {
139+ return null ;
140+ }
141+
142+ if (null != loader && loader .toString ().toLowerCase ().contains ("rasp" )) {
143+ return null ;
144+ }
145+
115146 try {
116147 ScopeManager .SCOPE_TRACKER .getPolicyScope ().enterAgent ();
117148
118- if (internalClassName == null
119- || internalClassName .startsWith ("io/dongtai/" )
120- || internalClassName .startsWith ("com/secnium/iast/" )
121- || internalClassName .startsWith ("java/lang/iast/" )
122- || internalClassName .startsWith ("cn/huoxian/iast/" )
123- || internalClassName .startsWith ("META-INF/" )
124- || "module-info" .equals (internalClassName )) {
125- return null ;
126- }
127-
128149 if (" com/alibaba/fastjson/JSON" .substring (1 ).equals (internalClassName )) {
129150 FastjsonCheck .setJsonClassLoader (loader );
130151 } else if (" com/alibaba/fastjson/parser/ParserConfig" .substring (1 ).equals (internalClassName )) {
131152 FastjsonCheck .setParseConfigClassLoader (loader );
132153 }
133154
134- if (null != loader && loader .toString ().toLowerCase ().contains ("rasp" )) {
135- return null ;
136- }
137-
138155 if (loader != null && protectionDomain != null ) {
139156 final CodeSource codeSource = protectionDomain .getCodeSource ();
140157 if (codeSource == null ) {
@@ -156,7 +173,6 @@ public byte[] transform(final ClassLoader loader,
156173
157174 ClassContext classContext = new ClassContext (cr , loader );
158175 if (Modifier .isInterface (classContext .getModifier ())) {
159- sourceCodeBak = null ;
160176 return null ;
161177 }
162178 final String className = classContext .getClassName ();
@@ -186,11 +202,9 @@ public byte[] transform(final ClassLoader loader,
186202 return dumpClassIfNecessary (cr .getClassName (), cw .toByteArray (), srcByteCodeArray );
187203 }
188204 }
189- sourceCodeBak = null ;
190205 } catch (Throwable throwable ) {
191206 DongTaiLog .warn (ErrorCode .get ("TRANSFORM_CLASS_FAILED" ), internalClassName , throwable );
192207 } finally {
193- classDiagram .setLoader (null );
194208 ScopeManager .SCOPE_TRACKER .getPolicyScope ().leaveAgent ();
195209 }
196210
@@ -347,5 +361,9 @@ public void reTransform() {
347361 public static HashMap <Object , byte []> getTransformMap () {
348362 return transformMap ;
349363 }
364+
365+ public IastClassDiagram getClassDiagram () {
366+ return classDiagram ;
367+ }
350368}
351369
0 commit comments