
Scala-basiertes statisches Analyse-Framework für Android- und Java-Bytecode mit Flussanalyse, Dekompilierung und nativer Code-Analyse durch symbolische Ausführung.
Dies ist das offizielle Repository für Argus-SAF.
Um Argus-SAF zu testen und damit zu spielen, können Sie unser Argus-SAF-playground-Projekt forken, das die grundlegende Einrichtung für ein Argus-SAF-erweitertes Projekt mit Democode enthält, der zeigt, wie verschiedene Analysen durchgeführt werden.
Argus-SAF/
+--src/main/scala/org.argus.saf/Main.scala Main class for argus-saf CLI.
+--jawa Core static analysis data structures, "*.class"&"*.jawa" file managing, jawa compiler, class hierarchy, method body resolving, flow analysis, etc.
+--amandroid Android resource parsers, information collector, decompiler, environment method builder, flow analysis, etc.
+--jnsaf Java native interface analysis.
+--nativedroid Annotation based analysis using angr symbolic execution engine.
Abhängigkeit von Jawa
durch Bearbeiten von
build.sbt:
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
Abhängigkeit von Amandroid
durch Bearbeiten von
build.sbt:
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
Hinweis: Die Abhängigkeit von Amandroid fügt automatisch Jawa als Abhängigkeit hinzu. Wenn Sie Maven oder Gradle verwenden, sollten Sie dies in das entsprechende Format übersetzen.
Voraussetzung: Java 10
$ java -jar argus-saf_***-version-assembly.jar
Um an der Entwicklung von Argus-SAF teilzunehmen, benötigen Sie:
Installieren Sie die folgende Software:
Forken Sie dieses Repository und klonen Sie es auf Ihren Computer
$ git clone https://github.com/arguslab/Argus-SAF.git
Öffnen Sie IntelliJ IDEA, wählen Sie File -> New -> Project from existing sources
(beim Startfenster: Import Project), zeigen Sie auf
das Verzeichnis, in dem sich das Argus-SAF-Repository befindet, und importieren Sie es als SBT project.
Wenn der Import abgeschlossen ist, gehen Sie zum Argus-SAF-Repository-Verzeichnis und führen Sie
$ git checkout .idea
aus, um Artefakte und Laufkonfigurationen für das IDEA-Projekt zu erhalten.
[Optional] Um Argus-SAF flüssiger zu bauen, sollten Sie dem Compiler-Prozess 2 GB Heap-Größe zuweisen.
Wenn Sie den Scala Compile Server (Standard) verwenden:
Einstellungen > Sprachen & Frameworks > Scala Compile Server > JVM maximale Heap-Größe
Wenn der Scala Compile Server deaktiviert ist:
Einstellungen > Build, Execution, Deployment > Compiler > Build process heap size
Bauen Sie Argus-SAF von der Kommandozeile aus: Gehen Sie zum Argus-SAF-Repository-Verzeichnis und führen Sie
$ tools/bin/sbt clean compile test
aus.
$ tools/bin/sbt assembly
Installieren Sie JN-Saf und NativeDroid:
$ tools/scripts/install.sh
Sie können jedes einzeln installieren durch:
$ tools/scripts/install.sh jnsaf
$ tools/scripts/install.sh nativedroid
Nach der Installation von JN-Saf und NativeDroid führen Sie aus:
$ tools/scripts/benchmark_cli.sh droidbench
$ tools/scripts/benchmark_cli.sh iccbench
$ tools/scripts/benchmark_cli.sh nativeflowbench
$ tools/scripts/install.sh nativedroid
$ python nativedroid/nativedroid/server/native_droid_server.py /tmp/binaries nativedroid/nativedroid/data/sourceAndSinks/NativeSourcesAndSinks.txt nativedroid/data/sourceAndSinks/TaintSourcesAndSinks.txt
Die Bazel-Integration ist in Arbeit. Ignorieren Sie vorerst alle BUILD-Dateien.
Um zu Argus-SAF beizutragen, senden Sie uns bitte einen Pull-Request von Ihrem Fork dieses Repositorys!
Weitere Informationen zum Bauen und Entwickeln von Argus-SAF finden Sie in unseren Richtlinien für Beiträge. Personen, die hervorragende Ideen eingebracht haben, sind im Contributor aufgeführt.
Wenn Sie nicht wissen, was Sie beitragen können, schauen Sie sich den Issue-Tracker mit dem Label help wanted an und beanspruchen Sie einen, um sich mit Argus-SAF aufzuwärmen.