Dieses Repository hostet das FlowDroid -Datenflussanalyse -Tool. FlowDroid berechnet die Datenflüsse in Android -Apps und Java -Programmen. Ziel ist es, Forschern und Praktikern ein Tool und eine Bibliothek zu bieten, auf die sie ihre eigenen Forschungsprojekte und Produktimplementierungen stützen können. Wir freuen uns zu sehen, dass FlowDroid jetzt sowohl in der Wissenschaft als auch in der Industrie weit verbreitet ist.
Sie können entweder FlowDroid mit Maven selbst erstellen oder eine Veröffentlichung von hier auf GitHub herunterladen.
FlowDroid finden Sie jetzt auf Maven Central. Um FlowDroid in Ihrem Maven -Build zu verwenden, fügen Sie Folgendes in Ihre Datei pom.xml auf. Wir empfehlen, die neueste und größte Version zu verwenden, es sei denn, Sie haben ein bestimmtes Problem, das Sie daran hindert. In diesem Fall lassen Sie es uns bitte wissen (siehe Kontakt unten).
<dependencies>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-summaries</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>de.fraunhofer.sit.sse.flowdroid</groupId>
<artifactId>soot-infoflow-android</artifactId>
<version>2.12.0</version>
</dependency>
</dependencies>
Für einen schnellen Start mit FlowDroid finden Sie unten "Verwenden des Datenflussverfolgers" unten. Wenn Sie nur das Befehlszeilen-Tool verwenden möchten, benötigen Sie lediglich die Datei "Soot-Infoflow-cmd-jar-with-Abhängigkeiten.jar".
Die Release-Seite enthält alle vorgefertigten JAR-Dateien für jede Version, die wir offiziell veröffentlichen. Wir empfehlen, die neueste und größte Version zu verwenden, es sei denn, Sie haben ein bestimmtes Problem, das Sie daran hindert. In diesem Fall lassen Sie es uns bitte wissen (siehe Kontakt unten).
Für einen schnellen Start mit FlowDroid finden Sie unten "Verwenden des Datenflussverfolgers" unten. Wenn Sie nur das Befehlszeilen-Tool verwenden möchten, benötigen Sie lediglich die Datei "Soot-Infoflow-cmd-jar-with-Abhängigkeiten.jar".
Anforderungen:
Zum ersten Mal muss FlowDroid aus dem übergeordneten Modul erstellt werden, dh der Root -Ordner des Projekts. Die vollständige Testsuite dauert ungefähr 30 Minuten. Wir empfehlen daher, die Tests beim Aufbau zu deaktivieren:
mvn install -DskipTestsUm den Build mit aktivierten Tests auszuführen, sind einige zusätzliche Schritte erforderlich:
rt.jar muss am Standardort sein (alternativ platzieren Sie den rt.jar in $JAVA_HOME/lib/ )--recursive )ANDROID_JARS -Umgebungsvariable muss auf das Verzeichnis von Android -Plattformen festgelegt werden (in der Regel $HOME/Android/Sdk/platforms/ )Wir arbeiten mit der Eclipse -IDE an FlowDroid. Alle Module sind Eclipse -Projekte und können in die Eclipse -IDE importiert werden. Sie werden dort als Maven -Projekte erscheinen, und Eclipse sollte sich um das Herunterladen aller erforderlichen Abhängigkeiten für Sie kümmern.
Sie können FlowDroid entweder über die Befehlszeilenschnittstelle (Modul Soot-Infoflow-CMD) oder als Bibliothek verwenden. Wenn Sie im Allgemeinen etwas implementieren möchten und einen Datenfluss -Tracker als Komponente benötigen, sind Sie besser dran, indem Sie die FlowDroid -Module als JAR -Dateien integrieren. Wenn Sie nur die Ergebnisse schnell benötigen, führen Sie einfach die Befehlszeilenschnittstelle aus.
FlowDroid wird unter Windows, Mac OS und Linux unterstützt.
Wenn Sie das Befehlszeilen-Tool zum Ausführen des Datenflussverfolgers verwenden möchten, können Sie den folgenden Befehl verwenden:
java -jar soot-infoflow-cmd/target/soot-infoflow-cmd-jar-with-dependencies.jar
-a <APK File>
-p <Android JAR folder>
-s <SourcesSinks file>
Der Android -Jar -Ordner ist das "Plattformen" -Verzeichnis in Ihrem Android SDK -Installationsordner. Die Definitionsdatei für Quellen und Senken definiert, was als Quelle für sensible Informationen behandelt werden soll und was als eine Spüle behandelt werden soll, die möglicherweise sensible Daten in die Außenwelt austauschen kann. Diese Definitionen sind spezifisch für Ihren Anwendungsfall. Wenn Sie jedoch nach Datenschutzproblemen suchen, können Sie unsere Standarddatei "SourcesAndSinks.txt" im Ordner "Soot-Infoflow-Android" als Ausgangspunkt verwenden.
Um sich über die anderen Optionen des Befehlszeilen-Tools zu informieren, können Sie das Tool mit der Option "-HELP" ausführen oder sich die Methode der Mainclass.InitializeCommandline () im Quellcode (Modul Soot-Infoflow-CMD) ansehen.
Für einige Apps dauert FlowDroid für große Apps sehr lange. Es gibt verschiedene Optionen, mit denen Sie einen Kompromiss zwischen Leistung, Präzision und Rückruf konfigurieren können.
-ns verfolgen keine Aufnahmen auf statischen Feldern und ignorieren statische Initialisierer.-ne verfolgen keine außergewöhnlichen Ströme.Sie können auch Zeitüberschreitungen definieren:
-dt N treibt die Datenflussanalyse nach n Sekunden ab und gibt die bisher erhaltenen Ergebnisse zurück.-ct N abbricht die Rückrufsammlung während der Callgraph -Konstruktion nach n Sekunden und setzt sich mit dem (unvollständigen) Callgraph fort, der bisher errichtet wurde.-rt N treibt die Ergebnissammlung nach n Sekunden ab und gibt die bisher erzielten Ergebnisse zurück.Beachten Sie, dass Timeouts additiv sind. Alle drei Phasen müssen eine Auszeit für das Tool abschließen oder die Ergebnisse liefern.
Wenn Sie FlowDroid als Bibliothek in Ihre eigene Lösung einbeziehen möchten, können Sie die jeweiligen JAR -Dateien direkt verweisen. Wenn Sie Maven verwenden, können Sie FlowDroid als Referenz hinzufügen und alle erforderlichen Komponenten auflösen. Je nachdem, was Sie analysieren möchten (Android -Apps oder Java -Programme), können Ihre Abhängigkeiten variieren.
In diesem Abschnitt sammeln wir Code- und Konfigurationsausschnitte für gemeinsame Aufgaben mit FlowDroid.
Um eine einfache Datenflussanalyse auszuführen, können Sie den folgenden Code verwenden. Sie müssen den Platzhalter androidJarFolder durch den Standort des platforms -Verzeichnisses in Ihrer Android -SDK -Installation ersetzen. Der Platzhalter apkPath bezieht sich auf den vollständigen Dateipfad der APK -Datei. Die Datenflussergebnisse sind über die InfoflowResults -Klasse zugänglich.
SetupApplication app = new SetupApplication(androidJarFolder, apkPath);
app.setTaintWrapper(new SummaryTaintWrapper(new LazySummaryProvider("summariesManual")));
InfoflowResults results = app.runInfoflow();
Die Datenflussanalyse verwendet die Standard -Zusammenfassungen der Stubdroid -Bibliothek. In der Standardkonfiguration werden diese Zusammenfassungen im summariesManual gespeichert, und es besteht nicht erforderlich, dies zu ändern.
Wenn Sie die Details darüber lesen möchten, wie FlowDroid funktioniert, ist die Doktorarbeit von Steven Arzt ein guter Ausgangspunkt.
Beiträge sind immer willkommen. FlowDroid ist ein Open -Source -Projekt, das wir in der Hoffnung veröffentlicht haben, dass es für die gesamte Forschungsgemeinschaft nützlich sein wird. Wenn Sie eine neue Funktion oder eine Fehlerbehebung haben, die Sie im offiziellen Code -Repository sehen möchten, eröffnen Sie hier eine Merge -Anfrage hier auf Github und kontaktieren Sie uns (siehe unten) mit einer kurzen Beschreibung dessen, was Sie getan haben.
FlowDroid ist unter der LGPL -Lizenz lizenziert, siehe Lizenzdatei. Dies bedeutet im Grunde, dass Sie das Tool frei verwenden können (auch in kommerziellen, geschlossenen Projekten). Wenn Sie das Tool jedoch erweitern oder ändern, müssen Sie Ihre Änderungen auch im LGPL zur Verfügung stellen. Dies stellt sicher, dass wir das Tool als Community -Anstrengung weiter verbessern können.
Wenn Sie Probleme haben, können Sie um Hilfe in der Soot -Mailingliste bitten. Sie können uns auch unter [email protected] kontaktieren.