这是 Argus-SAF 的官方仓库。
要测试和使用 Argus-SAF,你可以从我们的 Argus-SAF-playground 项目 fork,该项目包含了 Argus-SAF 增强项目的基本设置,并提供了演示代码来展示如何执行不同类型的分析。
Argus-SAF/
+--src/main/scala/org.argus.saf/Main.scala argus-saf CLI 的主类
+--jawa 核心静态分析数据结构,"*.class" 和 "*.jawa" 文件管理、jawa 编译器、类层次结构、方法体解析、流分析等。
+--amandroid Android 资源解析器、信息收集器、反编译器、环境方法构建器、流分析等。
+--jnsaf Java 原生接口分析。
+--nativedroid 基于 angr 符号执行引擎的注解驱动分析。
libraryDependencies += "com.github.arguslab" %% "jawa" % VERSION
libraryDependencies += "com.github.arguslab" %% "amandroid" % VERSION
注意:依赖 Amandroid 会自动将 Jawa 添加为依赖。如果你使用 Maven 或 Gradle,应将其转换为相应的格式。
要求:Java 10
$ java -jar argus-saf_***-version-assembly.jar
要参与 Argus-SAF 的开发,你需要:
安装以下软件:
Fork 本仓库并克隆到你的电脑
$ 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 构建更流畅,建议为编译器进程分配 2GB 的堆空间。
如果你使用 Scala 编译服务器(默认):
Settings > Languages & Frameworks > Scala Compile Server > JVM maximum heap size
如果 Scala 编译服务器已禁用:
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 做出贡献,请从你的仓库 fork 向我们发送 拉取请求!
有关构建和开发 Argus-SAF 的更多信息,请查看我们的 贡献指南。提供优秀想法的人员列在 贡献者 中。
如果你不知道贡献什么,
可以查看带有 help wanted 标签的 问题跟踪器,认领一个问题来帮助你熟悉 Argus-SAF。