
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のヒープサイズを割り当ててください。
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ラベルの付いたissue trackerを確認し、1つを選んでArgus-SAFに慣れるようにしてください。