Repolode
Verlintas

Verlintas/NOIR

adb経由でAndroid端末を監査し、アプリの権限や通信先、データフローを一覧化して、元に戻せる修正を行うデスクトップCLI。

スター
2,882
フォーク
272
未解決の Issue
0
最終コミット
6 時間前

これは何?

NOIRは、adbで接続したAndroid端末を監査するデスクトップツールです。ネットワーク権限と機密性の高い権限の両方を持つアプリを一覧表示し、端末上の各APKのdexファイルからURLを抽出して、ベンダーやカテゴリごとにアプリを分類します。さらに、位置情報、連絡先、SMS、アプリ一覧など、権限ごとにアクセスできるデータの種類を整理し、各アプリが通信するドメインと照合することで、どのデータがどこに送られる可能性があるかを確認できます。

リスクをスコア化して推奨アクションを提示し、安全に自動化できる変更と、手動での確認が必要な変更を分けます。自動変更はapp-opsの調整に限られ、変更ごとにロールバック用のコマンドが生成されます。アプリのアンインストールには明示的なフラグが必要です。オプションのdeepコマンドでは、単一のAPKを取得してjadxで逆コンパイルし、Runtime.execやDexClassLoaderなどの高リスクな呼び出しを検索できます。

NOIRはローカルで動作し、テレメトリやアカウントは不要です。root権限も必要ありません。レポートはJSONとMarkdownで出力でき、Pi-holeやAdGuardにインポートできるドメインリストも生成します。macOS、Windows、Debian/Ubuntuに対応しています。検出結果は静的な証拠であり、特定のデータ転送が実際に行われたことを証明するものではありません。

主な機能

  • 01ネットワーク権限と機密性の高い権限の両方を持つアプリを、各権限でアクセス可能なデータとともに一覧表示します。
  • 02端末上で通信先を抽出し、少量のテキスト結果だけをコンピューターに返します。
  • 03アプリをリスクスコアで評価し、テレメトリや広告などのベンダー・カテゴリ別に分類します。
  • 04AndroidManifestを解析し、exportedコンポーネント、平文通信、バックアップ、デバッグ可能の各フラグを確認します。
  • 05ロールバック用コマンドを伴う場合に限りapp-opsの変更を適用します。アンインストールには明示的なフラグが必要です。
  • 06Pi-holeまたはAdGuard向けのドメインリストをエクスポートします。

ユースケース

  • 自分のAndroid端末にプリインストールされたアプリが、どのサードパーティドメインにデータを送信しているか確認する。
  • アプリを信頼する前に、逆コンパイルしたコードでリスクの高い呼び出しを調べる。
  • 家庭用DNSフィルターに読み込ませるドメインブロックリストを生成する。
  • 個人用端末でアプリのバックグラウンド動作を、後から元に戻せる形で制限する。

クイックスタート

  1. 1

    GitHub からリポジトリをクローンします

    git clone https://github.com/Verlintas/NOIR
  2. 2

    プロジェクトフォルダーで CLI をビルドします

    ./gradlew :cli:installDist
  3. 3

    NOIR を実行して概要情報を表示します

    ./cli/build/install/noir/bin/noir --about

使う前に知っておきたいこと

  • Android スマートフォンのみが対象です。iOS はサポートされていません。
  • ソースからビルドするには JDK 17 以降と adb が必要です。また、スマートフォンで USB デバッグを有効にする必要があります。
  • 結果は静的な証拠であり、特定のデータ転送が発生したことを証明するものではありません。
  • deep コマンドには jadx も別途インストールする必要があります。

収録されている特集

トピック

よくある質問

NOIR とは?
adb経由でAndroid端末を監査し、アプリの権限や通信先、データフローを一覧化して、元に戻せる修正を行うデスクトップCLI。 NOIRは、adbで接続したAndroid端末を監査するデスクトップツールです。ネットワーク権限と機密性の高い権限の両方を持つアプリを一覧表示し、端末上の各APKのdexファイルからURLを抽出して、ベンダーやカテゴリごとにアプリを分類します。さらに、位置情報、連絡先、SMS、アプリ一覧など、権限ごとにアクセスできるデータの種類を整理し、各アプリが通信するドメインと照合することで、どのデータがどこに送られる可能性があるかを確認できます。
NOIR は無料で使えますか?ライセンスは?
NOIR は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
NOIR は今もメンテナンスされていますか?
活発にメンテナンス中。NOIR の最終コミットは 2026年11月7日 です。
NOIR は何に使えますか?
自分のAndroid端末にプリインストールされたアプリが、どのサードパーティドメインにデータを送信しているか確認する。 アプリを信頼する前に、逆コンパイルしたコードでリスクの高い呼び出しを調べる。 家庭用DNSフィルターに読み込ませるドメインブロックリストを生成する。 個人用端末でアプリのバックグラウンド動作を、後から元に戻せる形で制限する。
NOIR のインストール方法は?
GitHub からリポジトリをクローンします: git clone https://github.com/Verlintas/NOIR プロジェクトフォルダーで CLI をビルドします: ./gradlew :cli:installDist NOIR を実行して概要情報を表示します: ./cli/build/install/noir/bin/noir --about
NOIR はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Verlintas/NOIR

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト