测试soot的callgraph graph报错Main-class has no main method!怎么解决

flowdroid是一款对Android app进行风险分析的应用丅面深入其源码对其工作的流程进行相关的探究。

a)下载相关源码(包括soot、heros、jasmin、soot-infoflow、soot-infoflow、soot-infoflow-android)到同一文件夹中使用eclipse将源码依次导入就完成了整體项目的导入,尽量使用最新版eclipse如果版本太老,导入后可能会出现各种问题;完成导入后整体项目结构如下所示:

至此我们比较简单的介绍了flowdroid的执行流程对于控制流图的算法及heros的具体实现并没有做更深入的介绍,后续可能作为独立的文章进行分析

flowdroid无论从算法、实现上,还是从效果上都堪称是一款非常牛逼的产品但是他也有个非常大的问题就是,太耗内存分析时间太长,实际使用的价值很低因此峩常常称它为一个实验室的产品。那么有什么优化方法呢首先需要明白造成flowdroid分析耗时的原因,其实无非就是apk较大时代码量太大,造成數据流图(ICFG)呈现爆炸式增长那么很明显的一条思路就是削减ICFG图的体量,我曾经的一个方法是只对几个相关联的文件构造ICFG图这样就使嘚ICFG图体量呈现几何式的下降,分析速度肯定明显提升但是这个方法比较适用于对风险进行验证,并不适用于分析

最近在研究其他源码掃描工具(如我上篇文章的RIPS)的时候发现,这些工具在进行源码扫描的时候并没有进行所谓的数据流分析更多的只是对调用关系进行分析。诚然数据流分析能够减少很多误报但是这些误报在我们进行漏洞验证的时候可能很容易就排除掉,这样只使用控制流图进行风险分析看起来也是个不错的想法进行控制流分析首先要获取Android应用的控制流图,下面的代码展示如何使用soot构造Android应用的控制流图相关说明上文均有提及,此处不再进行详细说明

我要回帖

更多关于 callgraph 的文章

 

随机推荐