在网上找了好多资料,安装并运行FlowDroid,碰到了各种问题,网上也提供了多种解决方案,但是没有没有找到完全可以解决我碰到的问题的,也有一些提供的解决方案在我的安装过程中不成功,然后自己摸索,最后成功运行。下面列出我的安装步骤以及碰到的问题和我使用的解决方案。
参考了http://www.cnblogs.com/zlz099/p/6972805.html
1、首先
flowdroid官方文档给出了两种构建运行方式,分别是1)Obtaining the nightly builds和2)Building FlowDroid From Source。
(我尝试了第一种方式,但是报错,没有找到解决办法;尝试第二种方式,也是碰到很多问题,但是最终解决了。)
从github上下载所有的项目到本地,解压在同一个文件夹下。
github介绍:https://github.com/secure-software-engineering/soot-infoflow-android/wiki
heros: https://github.com/Sable/heros.git
jasmin: https://github.com/Sable/jasmin.git
soot: https://github.com/Sable/soot.git
soot-infoflow: https://github.com/secure-software-engineering/soot-infoflow.git
soot-infoflow-android: https://github.com/secure-software-engineering/soot-infoflow-android.git
2、将上述项目依次导入(import)Eclipse;在项目上出现红色标签,显示有多个错误。 选择 soot-infoflow-android项目下的test目录下
的soot.jimple.infoflow.android.test.droidBench项目中的测试例子,在其中一个测试例子上点击鼠标右键,选择run As-->jUnit test;然后出现各种报错,问题和解决方案依次如下:
a) 找不到两个环境文件, Android.jar 和 DROIDBENCH
下载依赖文件:两个,一个是android.jar,在谷歌官方下载,做Android开发的都在AndroidSDK\platform文件夹下。
一个是droidbench,DroidBench是用于评估Android软件污点分析工具有效性的开源测试集,FlowDroid中的测试代码部分使用到了DROIDBENCH环境变量,在分析自定义软件时不需要该变量。因此,该数据集不是运行FlowDroid的必须文件。下载地址是https://github.com/secure-software-engineering/DroidBench。如果是分析自己的软件,则不需要下载droidbench(个人见解,最好下载)。
配置环境变量:android_jars: C:\Users\admin\AppData\Local\Android\Sdk\platforms\android-21\android.jar(这是我的目录)
droidbench:C:\Users\admin\Desktop\Flowdroid\soot-infoflow-android-develop\test\soot\jimple\infoflow\android\test\droidBench(在自己本地的soot-infoflow-android目录下)。
b)提示 Logger, LoggerFactory和一个另外的类没有定义,找不到该类的定义。
发现这两个类文件分别在slf4j-api-1.7.5.jar 和 sootclasses-trunk-jar-with-dependencies.jar中,将两个jar加入到项目soot-infoflow-android下,又报错 SLF4J文件重复; 于是将两个jar文件放入系统的Jdk和JRE目录库下,该问题解决。
c)提示找不到文件EasyTaintWrapperSource.txt
。该文件可在项目soot-infoflow
根目录下找到,复制到soot-infoflow-anadroid
的根目录下即可。
d)测试 AliasingTests.java文件,报错 “Exception: org.jf.dexlib2.DexFileFactory$DexFileNotFoundException: StrongUpdate1.apk does not exist”,以及找不到很多对应的apk文件。 发现是 AliasingTests.java程序中的 InfoflowResults res = analyzeAPKFile("Aliasing/StrongUpdate1.apk");报错;分析发现是很多待分析的 apk不存在。
上https://github.com/secure-software-engineering/DroidBench 下载DroidBench-master.zip;解压后将里面的apk/目录下所有的待测试apk拷贝到 droidbench目录下,即C:\Users\pengbt\Desktop\Flowdroid\soot-infoflow-android-develop\test\soot\jimple\infoflow\android\test\droidBench下。
然后运行 可以成功得到分析的结果。报对应的apk有几个漏洞。
3、在soot中还有一个错误: Maven 报plugin execution not covered by lifecycle configuration......
参考 blog.csdn.net/xxd851116/article/details/25197373;在<plugins>标签外在加一个<pluginManagement>标签即可
<build>
<pluginManagement>
<plugins>
<plugin> ... </plugin>
<plugin> ... </plugin>
....
</plugins>
</pluginManagement>
</build>