2020年FlowDroid+IDEA搭建教程

  大家好,最近由于工作的需要搭建Android分析环境,Flowdroid作为老牌可靠(最主要的是作者还在维护更新)的静态污点分析工具,是分析Android静态特征的利器。

  网上有很多在Eclipse环境下利用maven配置Flowdroid的教程,但经笔者测试后发现,一是这些教程大多是16、17年的,由于库的版本几经更迭,一些函数和方法都已弃用,需要新版本来进行更好的分析;

二是用maven方法解决依赖虽然简单无脑,但有时某些提供依赖库的网页已经无法访问,或者更换了地址和版本,这时解决起来会非常麻烦,也是踩了不少坑。在尝试多个方法无果后决定直接导入作者编译好的jar文件,以减少不必要的麻烦。

  笔者在配置过程中遇到过一些奇怪的问题,最后终于成功解决。发出来给自己做笔记,也希望能帮到更多需要使用它的朋友。

一、软件和环境(均使用最新版本)   

  • IDEA IntelliJ 2020.2,旧版本也可以,无影响。
  • soot-jar库。flowdroid是基于soot框架开发的,必须有它才能工作。该库已经集成heros,jasmin等依赖,无需另行下载。
  • Flowdroid 2.8 。在发行版页面下选择soot-infoflow-classes和soot-infoflow-android-classes两个jar文件下载即可。

   

 

  以上内容下载完成后,把它们放在你想要加入的项目目录下。虽说库的位置对项目无影响,不过方便起见还是和使用到它的项目放在一起更好。笔者是放在libs下

  

二、导入jar

  点击IDEA窗口右上角的项目结构按钮,点击左侧的Libraries选项卡,点击加号选择Java,在所在的项目目录中选取刚刚下载的jar库,最后点击确定即可。

     

  如果是旧版本的IDEA,右上角可能没有项目结构的按钮。在菜单栏的FIle->Project Structure也能找到。

  

 

三、测试

  笔者参考了 使用Flowdroid生成Android程序API调用序列 这篇文章中的代码,需要注意将代码中的androidPlatformPath和appDirPath修改为你的SDK和样本所在目录。

  测试结果:

  

  

 

四、可能遇到的问题

1.java.lang.NoClassDefFoundError: gnu/trove/strategy/HashingStrategy

  未找到类,因为trove4j库没有下载配置好,缺少依赖。这里要感谢github上解答issue的大佬:issue

 

 

转载请注明出处!

 

posted @ 2020-09-09 11:21  Coder01  阅读(2913)  评论(1编辑  收藏  举报