Windows下flowdroid的构建与运行

  上一篇介绍了flowdroid相关的内容,见http://www.cnblogs.com/zlz099/p/6924879.html,这一篇讲一下flowdroid的构建与运行。

其中遇到了很多坑,但参考了http://aaronmoment.cn/run-flowdroid/

https://traceflight.github.io/tech/build-and-run-flowdroid-in-eclipse.html的博客后终于把它跑起来了。别人的博客都是介绍在

Linux和Mac OS x下的,我是在Windows下构建运行的。

1、JDK一定要选择jdk1.8以上的版本,1.7的版本会报错Unsupported major.minor version 52.0

2、首先,flowdroid官方文档给出了两种构建运行方式,分别是Obtaining the nightly builds和Building FlowDroid From Source。我选择从源码层构建flowdroid。

3、首先,从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

4、导入eclipse:打开Eclipse选择 File -> Import -> General -> Existing Projects into Workspace,分别导入5个项目即可。

5、下载依赖文件:两个,一个是android.jar,在谷歌官方下载,做Android开发的都在AndroidSDKplatform文件夹下。

一个是droidbench,DroidBench是用于评估Android软件污点分析工具有效性的开源测试集,FlowDroid中的测试代码部分使用到了DROIDBENCH环境变量,在分析自定义软件时不需要该变量。因此,该数据集不是运行FlowDroid的必须文件。下载地址是https://github.com/secure-software-engineering/DroidBench。如果是分析自己的软件,则不需要下载droidbench(个人见解,最好下载)。

配置环境变量:android_jar:   E:AndroidSDKplatformsandroid-19android.jar(自己找)

droidbench:E:MyJavaflowdroidsoot-infoflow-android estsootjimpleinfoflowandroid estdroidBench(在自己本地的soot-infoflow-android目录下)。

6、其他配置

  • SLF4J文件重复问题 在项目herossoot-infoflow两个项目中的classpath文件中均有slf4j-simple-1.7.5.jar。因此在项目编译时会提示SLF4J文件重复,解决方法是在soot-infoflow项目的.classpath文件中删除对应行<classpathentry kind="lib" path="lib/slf4j-simple-1.7.5.jar"/>。这个classpath文件在soot-infoflow目录下。
  • 无法找到EasyTaintWrapperSource.txt soot-infoflow-anadroid项目编译时提示找不到文件EasyTaintWrapperSource.txt。该文件可在项目soot-infoflow根目录下找到,复制到soot-infoflow-anadroid的根目录下即可。

7、运行flowdroid:

直接运行soot.jimple.infoflow.android.TestApps下的test文件,得到的结果如下:

找到了一个从source到sink的信息流。

soot-infoflow-anadroid项目提供了多个测试集,位于项目test文件夹下,分别为:droidBench数据集测试、insecureBank.apk测试、otherAPKs测试、sourceToSinks测试和xmlParser测试。使用方法为,右击对应的java文件,选择Run As -> JUnit Test。

8、分析自定义文件:

分析自定义文件使用soot.jimple.infoflow.android.TestApps中的Test.java文件。该文件的输入包括两个参数:apk-file和android-jar-directory。配置方法如下:

  右击Test.java文件,选择Run As -> Run Configurations…

左侧选择Java Application里面的Test(如果打开Configurations后,左侧没有Test,可先执行Run As -> Java Application),右侧选择Arguments标签,里面写入两个参数,点击Apply、Run,即可得到分析结果。




9、下一步将参考复旦杨珉教授团队的工作,找接下来要做的方向和内容。优化flowdroid或者利用flowdroid做隐私泄露分析等。

10、问了一个师兄,他在做flowdroid的性能优化,以及结合符号执行去提升精度。开发了更多的模式,能够更灵活的分析,比如针对特定的组件,特定的source、sink,还有后期结果处理部分策略的。

 
原文地址:https://www.cnblogs.com/zlz099/p/6972805.html