NOIR — 安卓隐私审计

桌面端 · ADB · 免 ROOT · MIT

你手机里有 500 个应用。
有多少在往外传?

NOIR 读取已安装应用能采集什么、发到哪里——权限、端点、数据流向—— 然后给你可回滚的处置。

Android leak audit, from your desktop.

最新版本 · macOS / Windows / Linux · MIT

$ noir
  device   2509FPN0BC · android 16
  scan      501/501
  flagged  256 apps · 31 tracker domains
  plan     19 app-ops · rollback.txt

01 / 它做什么

证据,不是感觉。

01盘点所有同时持有 INTERNET 与敏感权限的应用。
02提取端点来自 APK 本身,而不是权限名称。
03关联权限 → 数据类型(位置、通讯录、短信、麦克风、屏幕)→ 上报域名。
04处置可回滚的 app-ops,或按 trackers / review / functional 分级的 DNS 清单。

02 / 功能

小工具,硬边界。

清单层

导出组件

本地解析二进制 AXML:没有权限保护的导出组件、明文流量、备份、debuggable、targetSdk。

共享 UID

一个 uid,权限并集

58 个系统包可能共享同一个 Linux uid。NOIR 展示谁持有谁的权限。

DEEPSCAN

代码级信号

对高风险应用批量跑 jadx,统计 exec、动态加载、无障碍劫持、屏幕捕获与已知 SDK。

DNS

分级拦截

trackers 可整份导入;推送、登录、更新、支付单独分区,避免把手机拦坏。

TUI

为终端而生

CJK 对齐仪表盘、渐变进度条、每个 APK 刷新一帧、旧控制台 ASCII 降级。

便携包

双击即用

macOS、Windows、Linux 自带运行时。不需要 JDK、账号或遥测。

03 / 演示

在这里运行,模拟的。

完整跑一遍 noir 向导:设备检测、扫描、仪表盘,再到可回滚的 app-ops。按提示点 Y 即可。全程模拟,不涉及真实设备。

noir — zsh 100×18 · 模拟 点 Y · 横滑 →
JavaScript 已关闭——在终端运行 noir 可查看完整流程。
在终端里点 Y / N · 模拟输出

04 / 安装

两种方式。

便携包

# 下载、解压、双击
→ Start NOIR.command   macOS
→ Start NOIR.bat       Windows
→ Start-NOIR.sh        Linux

# 自带运行时,不需要 JDK

从源码构建

$ git clone https://github.com/Verlintas/NOIR
$ cd NOIR
$ ./gradlew :cli:installDist
$ ./cli/build/install/noir/bin/noir --about

首次运行会问你要不要自动下载 adb / jadx;检测不到设备时会给出开发者模式与 USB 调试步骤,并等待 180 秒。

05 / 限制

它不做什么。

06 / 常见问题

提问之前。

需要 root 吗?

不需要。全部通过 adb shell 完成。卸载仅限 --user 0,不会修改系统分区,恢复出厂即可还原。

会把手机弄坏吗?

默认只读。--apply 只改 app-ops,每条都能用 default 还原;rollback.txt 会写在报告旁边。卸载是单独、显式的命令。

会上传数据吗?

没有遥测、账号、统计。报告只留在你的输出目录。唯一的联网是 noir setup 下载 adb/jadx,以及本页向 GitHub API 查询版本和 Star 数。

为什么做静态分析而不是抓流量?

静态证据回答“这个应用能不能读 X、能不能连到 Y”,不需要 root、不占 VPN 槽、也不用信任证书。它不能证明传输真的发生过——需要的话配合 DNS 日志。

为什么不能删系统应用?

没有解锁 bootloader 和 root,Android 不允许。NOIR 只能为当前用户禁用或限制,并告诉你具体是哪个 app-op 或域名。

DeepScan 是什么?

noir deepscan 拉取高风险 APK,并行跑 jadx,统计代码级信号:Runtime.exec、动态 dex 加载、无障碍改写、屏幕捕获、设备标识读取和已知 SDK。它是分诊工具,不是反编译器替代品。

支持所有 Android 吗?

只要 adb 能看到设备就行。已在小米/HyperOS、AOSP 模拟器和厂商 ROM 上验证。厂商特定的判断在 classifier 里,容易扩展。

为什么有些域名标成“功能性”?

推送、登录、更新、支付、应用商店和云同步需要这些端点。拦掉会导致通知或登录失效。NOIR 把导出分成 trackers / review / functional,避免把手机拦坏。

07 / 它不是什么

相邻,但不等价。

NOIR权限管理器追踪器数据库
看到这个 APK 里的端点声明的权限应用级标签
回答哪类数据能到达哪个域名谁申请了什么“这个应用已知会追踪”
处置可回滚 app-ops、DNS 分级打开设置什么都不做
依赖adb,无需 root无无

它也不是杀毒软件、不是防火墙、不是云服务。它就是你自己跑的静态审计。

08 / 源码

运行之前先读。

MIT,无账号,自身不发起网络请求。唯一下载是 adb 和 jadx,而且只在你同意时。

09 / 联系

找人。

Bug 与功能请求走 GitHub。漏洞走私有安全通告。其他用邮件。