
Marco de análisis estático basado en Scala para bytecode de Android y Java con análisis de flujo, descompilación y análisis de código nativo mediante ejecución simbólica.
Este es el repositorio oficial de Argus-SAF.
Para probar y jugar con Argus-SAF, puedes bifurcar nuestro proyecto Argus-SAF-playground, que tiene la configuración básica para un proyecto mejorado con Argus-SAF con códigos de demostración de cómo realizar diferentes tipos de análisis.
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.
Depende de Jawa
editando
build.sbt:
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
Depende de Amandroid
editando
build.sbt:
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
Nota: Depender de Amandroid agregará automáticamente Jawa como dependencia. Si usas Maven o Gradle, debes traducirlo al formato correspondiente.
Requisito: Java 10
$ java -jar argus-saf_***-version-assembly.jar
Para participar en el desarrollo de Argus-SAF, necesitas:
Instalar el siguiente software:
Bifurcar este repositorio y clonarlo en tu computadora
$ git clone https://github.com/arguslab/Argus-SAF.git
Abrir IntelliJ IDEA, seleccionar File -> New -> Project from existing sources
(si desde la ventana inicial: Import Project), apuntar al
directorio donde está el repositorio de Argus-SAF y luego importarlo como SBT project.
Cuando la importación finalice, ve al directorio del repositorio de Argus-SAF y ejecuta
$ git checkout .idea
para obtener los artefactos y configuraciones de ejecución para el proyecto IDEA.
[Opcional] Para compilar Argus-SAF de manera más fluida, debes asignar 2GB de tamaño de heap al proceso del compilador.
si usas Scala Compile Server (por defecto):
Settings > Languages & Frameworks > Scala Compile Server > JVM maximum heap size
si Scala Compile Server está deshabilitado:
Settings > Build, Execution, Deployment > Compiler > Build process heap size
Compilar Argus-SAF desde la línea de comandos: ve al directorio del repositorio de Argus-SAF y ejecuta
$ tools/bin/sbt clean compile test
$ tools/bin/sbt assembly
Instalar JN-Saf y NativeDroid:
$ tools/scripts/install.sh
Puedes instalar uno u otro mediante:
$ tools/scripts/install.sh jnsaf
$ tools/scripts/install.sh nativedroid
Después de instalar JN-Saf y NativeDroid. Ejecuta:
$ 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
Integración con Bazel en progreso. Ignora todos los archivos BUILD por ahora.
Para contribuir a Argus-SAF, por favor envíanos un pull request desde tu bifurcación de este repositorio!
Para más información sobre cómo compilar y desarrollar Argus-SAF, consulta también nuestras directrices para contribuir. Las personas que proporcionaron ideas excelentes están listadas en contributor.
Si no sabes qué contribuir, puedes revisar el issue tracker con la etiqueta help wanted, y reclamar uno para ayudarte a calentar con Argus-SAF.