前言
IAST JAVA agent方法调用链,污点值传播等信息的采集功能的实现很大程度上依赖着AOP,IAST JAVA agent是怎么实现AOP的呢,请继续往下看。
源码分析
首先我们来看一下 ENGINEENTRYPOINTCLASS 即 com.secnium.iast.core.AgentEngine这个类。
install方法通过反射被调用,入参里的Instrumentation inst对AOP功能的实现十分重要,我们继续跟着inst看下去。agentEngine.init(mode, propertiesFilePath, inst);方法分别调用了各个引擎的init方法,其中的TransformEngine明显和AOP有关。
inst通过init方法传给了TransformEngine类的成员变量,在调用start方法时又传给了IastClassFileTransformer.init这个静态方法。
如图添加了iastClassFileTransformer到inst中,用它来执行字节码转换。类的字节码在载入JVM之前会调用ClassFileTransformer的transform方法。
而IastClassFileTransfor