
Framework de análise estática baseado em Scala para bytecode Android e Java com análise de fluxo, descompilação e análise de código nativo via execução simbólica.
Este é o repositório oficial do Argus-SAF.
Para testar e brincar com o Argus-SAF, você pode criar um fork do nosso projeto Argus-SAF-playground, que possui a configuração básica para um projeto aprimorado com Argus-SAF com códigos de demonstração de como realizar diferentes tipos de análise.
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.
Dependa do Jawa
editando
build.sbt:
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
Dependa do Amandroid
editando
build.sbt:
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
Nota: Depender do Amandroid adicionará automaticamente o Jawa como dependência. Se você usa Maven ou Gradle, deve converter para o formato correspondente.
Requisito: Java 10
$ java -jar argus-saf_***-version-assembly.jar
Para participar do desenvolvimento do Argus-SAF, você precisa:
Instalar o seguinte software:
Fazer um fork deste repositório e cloná-lo para o seu computador
$ git clone https://github.com/arguslab/Argus-SAF.git
Abra o IntelliJ IDEA, selecione File -> New -> Project from existing sources
(se a partir da janela inicial: Import Project), aponte para
o diretório onde o repositório Argus-SAF está e importe-o como SBT project.
Quando a importação terminar, vá para o diretório do repositório Argus-SAF e execute
$ git checkout .idea
para obter artefatos e configurações de execução para o projeto IDEA.
[Opcional] Para construir o Argus-SAF de forma mais suave, você deve dar 2GB de tamanho de heap para o processo do compilador.
se você usa o Scala Compile Server (padrão):
Settings > Languages & Frameworks > Scala Compile Server > JVM maximum heap size
se o Scala Compile Server estiver desabilitado:
Settings > Build, Execution, Deployment > Compiler > Build process heap size
Construa o Argus-SAF a partir da linha de comando: vá para o diretório do repositório Argus-SAF e execute
$ tools/bin/sbt clean compile test
$ tools/bin/sbt assembly
Instale JN-Saf e NativeDroid:
$ tools/scripts/install.sh
Você pode instalar um ou outro através de:
$ tools/scripts/install.sh jnsaf
$ tools/scripts/install.sh nativedroid
Após instalar JN-Saf e NativeDroid. Execute:
$ 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
Integração com Bazel em andamento. Ignore todos os arquivos BUILD por enquanto.
Para contribuir com o Argus-SAF, por favor nos envie um pull request a partir do seu fork deste repositório!
Para mais informações sobre como construir e desenvolver o Argus-SAF, consulte também nossas diretrizes para contribuição. As pessoas que forneceram ideias excelentes estão listadas em contribuidor.
Se você não sabe o que contribuir, pode conferir o rastreador de issues com a etiqueta help wanted, e reivindicar uma para se aquecer com o Argus-SAF.