zoukankan      html  css  js  c++  java
  • 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,还有后期结果处理部分策略的。

     
  • 相关阅读:
    DQL2.3.开始使用Dgraph基本类型和操作
    DQL2.7.开始使用Dgraph模糊搜索
    启动时查看配置文件application.yml
    从源码角度,带你研究什么是三级缓存
    Spring Boot 在启动时进行配置文件加解密
    论Redis分布式锁的正确使用姿势
    SpringBoot中整合Redis、Ehcache使用配置切换 并且整合到Shiro中
    在项目中,如何保证幂等性
    给你的SpringBoot做埋点监控JVM应用度量框架Micrometer
    从源码层面带你实现一个自动注入注解
  • 原文地址:https://www.cnblogs.com/zlz099/p/6972805.html
Copyright © 2011-2022 走看看