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
转载请注明出处!