
Framework d'analyse statique basé sur Scala pour le bytecode Android et Java avec analyse de flux, décompilation et analyse de code natif via l'exécution symbolique.
Ceci est le dépôt officiel pour Argus-SAF.
Pour tester et jouer avec Argus-SAF, vous pouvez forker notre projet Argus-SAF-playground, qui contient la configuration de base pour un projet amélioré avec Argus-SAF et des codes de démonstration pour effectuer différents types d'analyses.
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.
Dépendre de Jawa
en modifiant
build.sbt :
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
Dépendre de Amandroid
en modifiant
build.sbt :
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
Notez que : Dépendre de Amandroid ajoutera automatiquement Jawa comme dépendance. Si vous utilisez Maven ou Gradle, vous devez le traduire dans le format correspondant.
Prérequis : Java 10
$ java -jar argus-saf_***-version-assembly.jar
Pour participer au développement d'Argus-SAF, vous devez :
Installer les logiciels suivants :
Forker ce dépôt et le cloner sur votre ordinateur
$ git clone https://github.com/arguslab/Argus-SAF.git
Ouvrez IntelliJ IDEA, sélectionnez File -> New -> Project from existing sources
(si depuis la fenêtre initiale : Import Project), pointez vers
le répertoire où se trouve le dépôt Argus-SAF, puis importez-le en tant que SBT project.
Une fois l'importation terminée, allez dans le répertoire du dépôt Argus-SAF et exécutez
$ git checkout .idea
afin d'obtenir les artefacts et les configurations d'exécution pour le projet IDEA.
[Optionnel] Pour construire Argus-SAF plus facilement, vous devriez allouer 2 Go de taille de tas au processus du compilateur.
si vous utilisez le serveur de compilation Scala (par défaut) :
Settings > Languages & Frameworks > Scala Compile Server > JVM maximum heap size
si le serveur de compilation Scala est désactivé :
Settings > Build, Execution, Deployment > Compiler > Build process heap size
Construisez Argus-SAF en ligne de commande : allez dans le répertoire du dépôt Argus-SAF et exécutez
$ tools/bin/sbt clean compile test
$ tools/bin/sbt assembly
Installez JN-Saf et NativeDroid :
$ tools/scripts/install.sh
Vous pouvez installer l'un ou l'autre par :
$ tools/scripts/install.sh jnsaf
$ tools/scripts/install.sh nativedroid
Après avoir installé JN-Saf et NativeDroid, exécutez :
$ 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
L'intégration de Bazel est en cours. Ignorez tous les fichiers BUILD pour l'instant.
Pour contribuer à Argus-SAF, veuillez nous envoyer une pull request depuis votre fork de ce dépôt !
Pour plus d'informations sur la construction et le développement d'Argus-SAF, veuillez également consulter nos directives pour contribuer. Les personnes ayant fourni d'excellentes idées sont listées dans contributeur.
Si vous ne savez pas quoi contribuer, vous pouvez consulter le suivi des problèmes avec l'étiquette help wanted, et en réclamer un pour vous familiariser avec Argus-SAF.