ATTD-Tracer QBDIベース トレース収集ツール

Security

概要

ATTD-Tracerは、Androidアプリの動的解析を支援するトレース収集ツールで、QBDIとFridaという2つの強力なフレームワークをベースとしています。主にATTD-GUIプロジェクトのトレース収集モジュールとして機能し、実行中の関数の呼び出しや命令レベルのトレースを行い、その詳細なログをデバイス内の指定ディレクトリに出力します。SELinuxの設定を一時的に無効化するなどの準備作業を伴いますが、これにより高度な動的解析を実現。adbログを使ったトレース状況のモニタリングも可能で、リバースエンジニアリングやセキュリティ研究に役立つツールセットを提供しています。

GitHub

リポジトリの統計情報

  • スター数: 33
  • フォーク数: 11
  • ウォッチャー数: 33
  • コミット数: 2
  • ファイル数: 9
  • メインの言語: 未指定

主な特徴

  • QBDIをベースにした精密な動的トレース機能を搭載
  • Fridaと連携し、Android環境におけるリアルタイム解析を実現
  • トレース結果はデバイス内の特定フォルダにテキストファイルとして出力
  • adbログを利用したトレース状態のリアルタイムモニタリングに対応

技術的なポイント

本プロジェクトは、QBDI(Dynamic Binary Instrumentationフレームワーク)とFrida(動的インストルメンテーションツール)を組み合わせ、Androidアプリの実行中に関数単位や命令単位でのトレースを実現しています。QBDIは、バイナリコードを動的に書き換えながら実行を監視・制御できるため、対象の関数アドレスや命令アドレスにフックを挿入し細かな実行情報を収集可能です。Fridaは、JavaScriptベースでAndroidアプリをインジェクトし、柔軟なフックや解析をサポートするため、双方の強みを活かした構成となっています。

トレースデータは/data/data/$packagename/attd/record_$pid_$soBase_$funcAddr.txtの形式で保存され、ファイル名によりプロセスID、対象soファイルのベースアドレス、関数アドレスを特定可能です。これにより複数プロセスやモジュールのトレースを区別しやすくなっています。adb logcatでFANGG3タグのログを監視することで、トレース開始・終了やフック時のアドレス情報をリアルタイムに把握できます。

また、SELinuxを一時的に無効化する手順がREADMEに記載されており、これにより通常のAndroid環境では制限される動的解析処理が可能となる点も特徴です。ビルドにはCMakeを用い、C++コードやヘッダーファイルを整理。library.cppなどでQBDIのAPIを活用したトレースロジックを実装しており、エントリポイントのフックやトレースイベントのハンドリングを行っています。

このように、ATTD-Tracerは動的解析の基盤として堅牢かつ使いやすい構造を持ち、解析者が対象アプリの挙動を詳細かつ効率的に把握できる環境を提供しています。特にモバイルセキュリティ分野でのリバースエンジニアリングや脆弱性調査に有効であり、QBDIの高度なバイナリ操作能力とFridaの柔軟なスクリプト制御を組み合わせる点が技術的なハイライトです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: Git管理から除外するファイル指定
  • CMakeLists.txt: プロジェクトのビルド設定ファイル
  • include: ヘッダーファイル群を格納するディレクトリ
  • library.cpp: QBDIを用いたトレース機能のコア実装
  • libs: 依存ライブラリや外部モジュールを格納
  • README.md: プロジェクト概要や利用手順の説明
  • Android.mk: Androidビルド用ファイル(存在する場合)
  • scripts/: 補助スクリプト類(存在する場合)
  • その他ソースファイル、ドキュメントファイル

まとめ

QBDIとFridaを融合した高精度なAndroid動的トレースツール。

リポジトリ情報: