FlowDroid:修改参数得到不同的调用函数关系图

constructCallgraph()函数用来得到调用函数关系图
默认的是AutomaticSelection方法,可能会忽略一些函数关系

画图的参数源代码:

protected void configureCallgraph() {
        switch(this.config.getCallgraphAlgorithm()) {
        case AutomaticSelection:
        case SPARK:
            Options.v().setPhaseOption("cg.spark", "on");
            break;
        case GEOM:
            Options.v().setPhaseOption("cg.spark", "on");
            AbstractInfoflow.setGeomPtaSpecificOptions();
            break;
        case CHA:
            Options.v().setPhaseOption("cg.cha", "on");
            break;
        case RTA:
            Options.v().setPhaseOption("cg.spark", "on");
            Options.v().setPhaseOption("cg.spark", "rta:true");
            Options.v().setPhaseOption("cg.spark", "on-fly-cg:false");
            break;
        case VTA:
            Options.v().setPhaseOption("cg.spark", "on");
            Options.v().setPhaseOption("cg.spark", "vta:true");
            break;
        default:
            throw new RuntimeException("Invalid callgraph algorithm");
        }
        if (this.config.getEnableReflection()) {
            Options.v().setPhaseOption("cg", "types-for-invoke:true");
        }

    }

在调用constructCallgraph之前修改参数

SetupApplication app = new SetupApplication(platformDir, apkDir);     
app.getConfig().setCallgraphAlgorithm(InfoflowConfiguration.CallgraphAlgorithm.GEOM);
app.constructCallgraph();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。