
Scala 기반의 Android 및 Java 바이트코드 정적 분석 프레임워크로, 흐름 분석, 역컴파일, 기호 실행을 통한 네이티브 코드 분석을 지원합니다.
이것은 Argus-SAF의 공식 저장소입니다.
Argus-SAF를 테스트하고 실험하려면, Argus-SAF-playground 프로젝트를 포크하여 사용할 수 있습니다. 이 프로젝트는 Argus-SAF 강화 프로젝트의 기본 설정과 다양한 유형의 분석을 수행하는 방법에 대한 데모 코드를 제공합니다.
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
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를 더 원활하게 빌드하려면 컴파일러 프로세스에 2GB의 힙 크기를 할당해야 합니다.
Settings > Languages & Frameworks > Scala Compile Server > JVM maximum heap sizeSettings > 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를 보내주세요!
빌드 및 개발에 대한 자세한 정보는 기여 가이드라인을 확인하세요. 훌륭한 아이디어를 제공한 사람들은 기여자 목록에 기재되어 있습니다.
무엇을 기여할지 모르겠다면, help wanted 라벨이 있는 이슈 트래커를 확인하고 하나를 선택하여 Argus-SAF에 익숙해질 수 있습니다.