|
| 1 | +# FlowDroid Data Flow Analysis Tool |
| 2 | + |
| 3 | +This repository hosts the FlowDroid data flow analysis tool. FlowDroid statically computes data flows in Android apps and Java programs. |
| 4 | +Its goal is to provide researchers and practitioners with a tool and library on which they can base their own research projects and |
| 5 | +product implementations. We are happy to see that FlowDroid is now widely used in academia as well as industry. |
| 6 | + |
| 7 | +## Using The Data Flow Tracker |
| 8 | + |
| 9 | +You can use FlowDroid either through its command-line interface (module soot-infoflow-cmd) or as a library. In general, if you would |
| 10 | +like to implement something and need a data flow tracker as a component, you are better off by integrating the FlowDroid modules as |
| 11 | +JAR files. If you just need the results quickly, simply run the command-line interface. |
| 12 | + |
| 13 | +FlowDroid is supported on Windows, Mac OS, and Linux. |
| 14 | + |
| 15 | +## Building The Tool |
| 16 | + |
| 17 | +From version 2.5 on, FlowDroid is built using Maven. Use |
| 18 | + |
| 19 | +``` |
| 20 | +EXPORT ANDROID_JARS=<Android JAR folder> |
| 21 | +EXPORT DROIDBENCH=<DroidBench folder> |
| 22 | +mvn install |
| 23 | +``` |
| 24 | + |
| 25 | +to build the tool and run all unit tests. The Android JAR folder is the "platforms" directory inside your Android SDK installation |
| 26 | +folder. The DroidBench folder is the location of DroidBench, our micro-benchmark suite. These two environment variables are only |
| 27 | +required for running the unit tests. |
| 28 | + |
| 29 | +If you do want DroidBench, or are in a hurry and just want to build the tool without the tests (they can take |
| 30 | +quite some time to complete, we have more than 400 of them), try |
| 31 | + |
| 32 | +``` |
| 33 | +mvn -DskipTests install |
| 34 | +``` |
| 35 | + |
| 36 | +Either way, you will find the built JAR files in the "target" folder of the respective modules. Maven should take care of all |
| 37 | +dependencies that are required for the build. Unless you need to build FlowDroid on a machine without an Internet connection, |
| 38 | +thing should be pretty easy. |
| 39 | + |
| 40 | +## Publications |
| 41 | + |
| 42 | +If you want to read the details on how FlowDroid works, <a href="http://tuprints.ulb.tu-darmstadt.de/5937/">the PhD thesis of |
| 43 | +Steven Arzt</a> is a good place to start. |
| 44 | + |
| 45 | +## Contributing to FlowDroid |
| 46 | + |
| 47 | +Contributions are always welcome. FlowDroid is an open source project that we published in the hope that it will be useful to |
| 48 | +the research community as a whole. If you have a new feature of a bug fix that you would like to see in the official code |
| 49 | +repository, please open a merge request here on Github and contact us (see below) with a short description of what you have |
| 50 | +done. |
| 51 | + |
| 52 | +## License |
| 53 | + |
| 54 | +FlowDroid is licensed |
| 55 | +under the LGPL license, see LICENSE file. This basically means that you are free to use the tool (even in commercial, closed-source |
| 56 | +projects). However, if you extend or modify the tool, you must make your changes available under the LGPL as well. This ensures that |
| 57 | +we can continue to improve the tool as a community effort. |
| 58 | + |
| 59 | +## Contact |
| 60 | + |
| 61 | +If you experience any issues, you can ask for help on the Soot mailing list. You can also contact us at [email protected]. |
0 commit comments