正在自动登录…
Verlintas/ NOIR
NOIR 是一款在电脑上运行的 Android 设备审计工具,通过 adb 读取已连接设备的应用清单、权限和 APK 网络端点,生成风险报告和处置建议。适用于检查自己的 Android 设备可能泄露的数据、识别风险应用,并执行安全的 appops 操作以增强隐私保护。
AI 中文解读 · 根据仓库描述与 README 生成 · 2026/11/1 13:41:46 · 查看原文
- 累计 Stars
- 59
- 当前热度
- 1 天内 · 小火
- 仓库创建时间
选用指南
AI 根据 README 整理 · 2026/11/1 13:41:46
- 适用场景
适用于用户对自己的 Android 设备进行隐私安全审查,识别应用权限滥用和潜在数据泄露风险。
查看 README 依据
 **把「这台手机到底能泄露什么」变成一份可复现的报告。** NOIR 是一个跑在电脑上的审计工具,通过 `adb` 读取已连接 Android 设备的应用清单、权限和 APK 里的网络端点,给出分类、风险评分和可执行的处置建议。它也可以在需要时调用 `jadx` 对单个应用做反编译和关键字检索。 > 定位:**审计与自我防护**。面向自己的设备、自己的应用、已授权的安全研究。 --- ## 它做什么 1. **盘点**:列出所有「有网络权限 + 敏感权限」的应用,以及它们各自拿到了什么。 2. **抽取端点**:在设备端用 `unzip + strings` 从每个 APK 的 dex 里提取 URL,只回传几 KB,不把整包拉回电脑。 3. **分类与打分**:按包名和域名识别厂商(Xiaomi / Google / 腾讯 / 高德 …)与类别(遥测、广告、定位、输入法 …),结合权限和上报端点计算风险分。
4. **数据关联**:把权限翻译成"能拿到什么数据"(位置/通讯录/短信/通话/麦克风/相机/屏幕/应用列表/设备标识/文件/日历/账号),再和上报域名配对,得出"哪类数据可能流向哪里"。 5. **共享 UID**:识别 `android.uid.system` 这类共享用户,列出哪些包实际上共享同一套权限并集。 6. **清单层**:解析 `AndroidManifest.xml` 二进制 AXML,找出没有权限保护的导出组件、明文流量、备份、debuggable、targetSdk。 4. **给建议**:区分「可安全自动执行」「需人工确认」「不建议动」,并为每条动作生成回滚命令。 5. **必要时深挖**:`deep` 会把单个 APK 拉到本地,用 `jadx` 反编译后检索 `Runtime.exec`、`setApplicationEnabledSetting`、`DexClassLoader`、`MediaProjection` 等高风险调用。 ## 它不做什么 - 不联网、不上传任何数据、不需要账号。 - 不修改系统分区,不需要 root。 - 不会自动卸载任何东西,除非你显式加 `--aggressive`。 --- ## 第一次运行 ```bash noir ``` 不带参数会进入向导:
- 目标用户
面向设备所有者、应用开发者和已授权的安全研究人员,强调用于自身设备或授权审计。
查看 README 依据
 **把「这台手机到底能泄露什么」变成一份可复现的报告。** NOIR 是一个跑在电脑上的审计工具,通过 `adb` 读取已连接 Android 设备的应用清单、权限和 APK 里的网络端点,给出分类、风险评分和可执行的处置建议。它也可以在需要时调用 `jadx` 对单个应用做反编译和关键字检索。 > 定位:**审计与自我防护**。面向自己的设备、自己的应用、已授权的安全研究。 --- ## 它做什么 1. **盘点**:列出所有「有网络权限 + 敏感权限」的应用,以及它们各自拿到了什么。 2. **抽取端点**:在设备端用 `unzip + strings` 从每个 APK 的 dex 里提取 URL,只回传几 KB,不把整包拉回电脑。 3. **分类与打分**:按包名和域名识别厂商(Xiaomi / Google / 腾讯 / 高德 …)与类别(遥测、广告、定位、输入法 …),结合权限和上报端点计算风险分。
- [Issues](https://github.com/Verlintas/NOIR/issues) — bug 请附上 `noir doctor` 输出 ## 路线图 - [x] 等宽仪表盘(`noir ui`) - [x] DeepScan(批量反编译 + 代码级信号) - [x] 自带运行时的双击即用包(jpackage) - [ ] 图形界面(Compose Multiplatform) - [ ] 规则文件可配置(YAML),支持社区规则包 - [ ] 与 `apktool` / `jadx` 的批量流水线 - [ ] 设备端 DNS/VPN 拦截方案导出 - [ ] 扫描结果签名与版本对比 ## 免责声明 NOIR 只应用于**你自己的设备**,或你获得明确授权的设备。它给出的是静态证据 ("这个应用具备这个能力,并且代码里有这个端点"),**不能证明**某次具体传输发生过。 请结合网络层证据自行判断。 ## 许可 MIT © 2026 Verlintas
- 使用方式
作为命令行工具使用,典型命令包括 `noir scan`、`noir ui` 和 `noir auto`,支持自动扫描、生成处置计划并可选执行。
查看 README 依据
│ 定位/地图 ████░░░░░░░░░░░░░░░░░░░░░░ 2 1% │ ├─ PLAN ─────────────────────────────────────────────────────────────────────┤ │ risk ● HIGH 2 ● MED 34 ● LOW 0 │ ╰────────────────────────────────────────────────────────────────────────────╯ ``` 兼容开关: - `--ascii`:纯 ASCII 边框,给旧版 Windows 控制台 - `--no-color` / `--color`:关闭或强制 ANSI 颜色(默认按是否为 TTY 自动判断) ## 用法 ```bash noir --about # 它是什么、会写什么、许可 noir --version noir devices noir scan # 全量扫描,输出 JSON / Markdown / 域名清单
noir ui # 扫描并渲染仪表盘 noir auto # 扫描 + 分类 + 生成处置计划(dry-run) noir auto --apply # 执行安全的 appops 动作(可回滚) noir auto --apply --aggressive # 额外卸载被标记的用户应用 noir deep com.example.app # 拉包 + jadx + 关键字检索 noir block com.example.app # 打印处置命令 noir block com.example.app --apply ``` 常用参数: | 参数 | 说明 | |---|---| | `--serial <id>` | 指定设备 | | `--out <dir>` | 输出目录(默认 `noir-out`) | | `--min <score>` | 只保留分数 ≥ N 的应用 | | `--limit <n>` | 最多输出 N 条 | | `--only <regex>` | 只扫描匹配的包名,例如 `--only 'com\.miui\.'` | | `--adb <path>` / `--jadx <path>` | 手动指定工具路径 |
- 部署要求
支持 macOS、Windows 10/11、Debian/Ubuntu。依赖 JDK 17 和 Android platform-tools(adb),DeepScan 需 jadx;便携版自带运行时,无需预装 Java。adb 和 jadx 默认自动查找,缺失时可自动下载,也可手动指定。
查看 README 依据
│ 3. 插线后手机弹「允许 USB 调试吗?」→ 勾选「一律允许」 │ │ 4. 还不行就换一根数据线(很多线只能充电) │ ╰──────────────────────────────────────────────────────────────╯ ``` 已连接但没授权时,会单独提示「撤销 USB 调试授权后重插」。 ## 支持平台 | 系统 | 状态 | |---|---| | macOS (Intel / Apple Silicon) | ✅ | | Windows 10 / 11 | ✅ | | Debian / Ubuntu | ✅ | 依赖: - **JDK 17+** - **Android platform-tools**(`adb`) - **jadx**(仅 `deep` 命令需要) 程序会自动在常见安装位置查找 `adb` 和 `jadx`;找不到时可以用 `--adb` / `--jadx` 指定。 ```bash # macOS brew install --cask android-platform-tools jadx # Debian / Ubuntu sudo apt install adb
# jadx: https://github.com/skylot/jadx/releases # Windows (scoop) scoop install adb jadx ``` --- ## 安装 **方式一:下载即用(推荐)** 到 [Releases](https://github.com/Verlintas/NOIR/releases) 下载对应平台的 portable 包: ``` noir-v0.1.1-macOS-portable.zip noir-v0.1.1-Windows-portable.zip noir-v0.1.1-Linux-portable.zip SHA256SUMS.txt ``` 解压后**双击启动器**即可,包内自带运行时,**不需要安装 Java**: | 系统 | 双击这个 | 如果被拦 | |---|---|---| | macOS | `Start NOIR.command` | 右键 → 打开;或 `xattr -dr com.apple.quarantine "Start NOIR.command" NOIR.app` | | Windows | `Start NOIR.bat` | SmartScreen → 更多信息 → 仍要运行 |
- 已知限制
不支持 iOS;默认不修改系统,不自动卸载;卸载需显式启用 --aggressive。报告不证明实际数据传输发生,仅提供静态证据。
查看 README 依据
4. **数据关联**:把权限翻译成"能拿到什么数据"(位置/通讯录/短信/通话/麦克风/相机/屏幕/应用列表/设备标识/文件/日历/账号),再和上报域名配对,得出"哪类数据可能流向哪里"。 5. **共享 UID**:识别 `android.uid.system` 这类共享用户,列出哪些包实际上共享同一套权限并集。 6. **清单层**:解析 `AndroidManifest.xml` 二进制 AXML,找出没有权限保护的导出组件、明文流量、备份、debuggable、targetSdk。 4. **给建议**:区分「可安全自动执行」「需人工确认」「不建议动」,并为每条动作生成回滚命令。 5. **必要时深挖**:`deep` 会把单个 APK 拉到本地,用 `jadx` 反编译后检索 `Runtime.exec`、`setApplicationEnabledSetting`、`DexClassLoader`、`MediaProjection` 等高风险调用。 ## 它不做什么 - 不联网、不上传任何数据、不需要账号。 - 不修改系统分区,不需要 root。 - 不会自动卸载任何东西,除非你显式加 `--aggressive`。 --- ## 第一次运行 ```bash noir ``` 不带参数会进入向导:
不需要。全部通过 `adb` 的 shell 权限完成;卸载只是 `--user 0` 级别,APK 仍在系统分区。 **会改坏手机吗?** 默认完全只读。`--apply` 只改 app-ops,每条都能用 `default` 还原,`rollback.txt` 会写出来。 `noir block` 的卸载也会先打印 `pm install-existing` 的恢复命令。 **为什么有些应用只给"人工复核"?** 系统应用不能真正卸载(`--user 0` 卸载也会被 OTA 或恢复出厂装回来),所以只建议 app-ops 或 DNS 层拦截。 **DNS 拦截为什么只导出不执行?** 跨平台改 DNS 很容易把设备网断掉(我们在开发中踩过),所以只产出 `domains.txt`, 由你导入 Pi-hole / AdGuard / 路由器。 **支持 iOS 吗?** 不支持。`core` 是按 Kotlin Multiplatform 组织的,但审计逻辑依赖 Android 的 `dumpsys` 和 APK 格式。 ## 参与 - [CONTRIBUTING.md](CONTRIBUTING.md) — 构建、测试、规则放在哪 - [SECURITY.md](SECURITY.md) — 漏洞报告方式(请不要开公开 issue)
- [Issues](https://github.com/Verlintas/NOIR/issues) — bug 请附上 `noir doctor` 输出 ## 路线图 - [x] 等宽仪表盘(`noir ui`) - [x] DeepScan(批量反编译 + 代码级信号) - [x] 自带运行时的双击即用包(jpackage) - [ ] 图形界面(Compose Multiplatform) - [ ] 规则文件可配置(YAML),支持社区规则包 - [ ] 与 `apktool` / `jadx` 的批量流水线 - [ ] 设备端 DNS/VPN 拦截方案导出 - [ ] 扫描结果签名与版本对比 ## 免责声明 NOIR 只应用于**你自己的设备**,或你获得明确授权的设备。它给出的是静态证据 ("这个应用具备这个能力,并且代码里有这个端点"),**不能证明**某次具体传输发生过。 请结合网络层证据自行判断。 ## 许可 MIT © 2026 Verlintas
README
正在加载 README…
收录信息
- 仓库创建时间
- 2026/11/1 05:34:39
- 首次达标收录
- 2026/11/1 13:37:08
- 统计更新时间
- 2026/11/1 14:10:37
按创建时长与累计 Stars 判断等级。首次达标收录后,即使未达当前门槛仍保留;累计 Stars 和仓库状态会定期更新。确认只有 README 及辅助文件的仓库会停止公开。
模型评估
值得看加权总分 4.0 / 5
由 Jev 模型根据仓库描述与 README 评估,2026/11/1 13:37:08 生成。评分仅供参考,不是代码、安全或许可证审查;热度等级另按创建时长与累计 Stars 计算。
仓库信息
- 最近推送
- 2026/11/1 13:56:37
- 许可证标识
- MIT
- Fork 数
- 5
- 当前状态
- 未归档