
Framework di analisi statica basato su Scala per bytecode Android e Java con analisi del flusso, decompilazione e analisi del codice nativo tramite esecuzione simbolica.
Questo è il repository ufficiale per Argus-SAF.
Per testare e giocare con Argus-SAF, puoi fare fork dal nostro progetto Argus-SAF-playground, che ha la configurazione di base per un progetto potenziato con Argus-SAF con codici demo su come eseguire diversi tipi di analisi.
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.
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
Nota: Dipendere da Amandroid aggiungerà automaticamente Jawa come dipendenza. Se usi Maven o Gradle, dovresti tradurlo nel formato corrispondente.
Requisito: Java 10
$ java -jar argus-saf_***-version-assembly.jar
Per prendere parte allo sviluppo di Argus-SAF, devi:
Installa il seguente software:
Fai fork di questo repository e clonalo sul tuo computer
$ git clone https://github.com/arguslab/Argus-SAF.git
Apri IntelliJ IDEA, seleziona File -> New -> Project from existing sources
(se dalla finestra iniziale: Import Project), punta alla
directory in cui si trova il repository Argus-SAF e poi importalo come SBT project.
Quando l'importazione è terminata, vai alla directory del repository Argus-SAF ed esegui
$ git checkout .idea
per ottenere gli artifact e le configurazioni di esecuzione per il progetto IDEA.
[Opzionale] Per compilare Argus-SAF in modo più fluido, dovresti dare 2GB di dimensione heap al processo del compilatore.
se usi Scala Compile Server (default):
Impostazioni > Linguaggi e Framework > Scala Compile Server > Dimensione massima heap JVM
se Scala Compile Server è disabilitato:
Impostazioni > Build, Esecuzione, Distribuzione > Compiler > Dimensione heap del processo di compilazione
Compila Argus-SAF dalla riga di comando: vai alla directory del repository Argus-SAF ed esegui
$ tools/bin/sbt clean compile test
$ tools/bin/sbt assembly
Installa JN-Saf e NativeDroid:
$ tools/scripts/install.sh
Puoi installare uno dei due con:
$ tools/scripts/install.sh jnsaf
$ tools/scripts/install.sh nativedroid
Dopo aver installato JN-Saf e NativeDroid. Esegui:
$ 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
Integrazione con Bazel in corso. Ignora tutti i file BUILD per ora.
Per contribuire a Argus-SAF, inviaci una pull request dal tuo fork di questo repository!
Per maggiori informazioni sulla compilazione e lo sviluppo di Argus-SAF, consulta anche le nostre linee guida per contribuire. Le persone che hanno fornito idee eccellenti sono elencate in contributor.
Se non sai cosa contribuire,
puoi dare un'occhiata al tracciatore di problemi con etichetta help wanted, e reclamarne uno per scaldarti con Argus-SAF.