
Фреймворк статического анализа на Scala для Android и Java байт-кода с анализом потоков, декомпиляцией и анализом нативного кода с помощью символьного выполнения.
Это официальный репозиторий Argus-SAF.
Для тестирования и игры с Argus-SAF вы можете форкнуть наш проект Argus-SAF-playground, который содержит базовую настройку для проекта, расширенного Argus-SAF, с демонстрационными кодами, показывающими, как выполнять различные виды анализа.
Argus-SAF/
+--src/main/scala/org.argus.saf/Main.scala Главный класс для CLI argus-saf.
+--jawa Основные структуры данных статического анализа, управление файлами "*.class" и "*.jawa", компилятор jawa, иерархия классов, разрешение тела метода, анализ потоков и т.д.
+--amandroid Парсеры ресурсов Android, сборщик информации, декомпилятор, построитель методов окружения, анализ потоков и т.д.
+--jnsaf Анализ нативного интерфейса Java.
+--nativedroid Аннотационный анализ с использованием символьного движка angr.
Зависимость от Jawa
путем редактирования
build.sbt:
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
Зависимость от Amandroid
путем редактирования
build.sbt:
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
Примечание: зависимость от Amandroid автоматически добавит Jawa как зависимость. Если вы используете Maven или Gradle, вам следует преобразовать это в соответствующий формат.
Требование: Java 10
$ java -jar argus-saf_***-version-assembly.jar
Чтобы принять участие в разработке Argus-SAF, вам необходимо:
Установить следующее программное обеспечение:
Форкнуть этот репозиторий и клонировать его на свой компьютер
$ git clone https://github.com/arguslab/Argus-SAF.git
Откройте IntelliJ IDEA, выберите File -> New -> Project from existing sources
(если из начального окна: Import Project), укажите
каталог, где находится репозиторий Argus-SAF, и импортируйте его как SBT project.
Когда импорт завершится, перейдите в каталог репозитория Argus-SAF и выполните
$ git checkout .idea
чтобы получить артефакты и конфигурации запуска для проекта IDEA.
[Опционально] Для более плавной сборки Argus-SAF выделите 2 ГБ памяти кучи процессу компилятора.
если вы используете Scala Compile Server (по умолчанию):
Settings > Languages & Frameworks > Scala Compile Server > JVM maximum heap size
если Scala Compile Server отключен:
Settings > Build, Execution, Deployment > Compiler > Build process heap size
Соберите Argus-SAF из командной строки: перейдите в каталог репозитория Argus-SAF и выполните
$ tools/bin/sbt clean compile test
$ tools/bin/sbt assembly
Установите JN-Saf и NativeDroid:
$ tools/scripts/install.sh
Вы можете установить любой из них по отдельности:
$ tools/scripts/install.sh jnsaf
$ tools/scripts/install.sh nativedroid
После установки JN-Saf и NativeDroid. Выполните:
$ 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
Интеграция Bazel в разработке. Пока игнорируйте все файлы BUILD.
Чтобы внести вклад в Argus-SAF, отправьте нам pull request из вашего форка этого репозитория!
Для получения дополнительной информации о сборке и разработке Argus-SAF, пожалуйста, ознакомьтесь с нашими руководящими принципами для участников. Люди, предложившие отличные идеи, перечислены в списке участников.
Если вы не знаете, чем помочь,
вы можете просмотреть трекер задач с меткой help wanted и выбрать одну задачу, чтобы разогреться с Argus-SAF.