frankheat/noxen

GitHub: frankheat/noxen

基于 Frida 的 Android 运行时拦截工具,用于捕获、检查、修改和转发应用组件间的 Intent 通信以映射攻击面。

Stars: 89 | Forks: 8

用于安全研究的 Android 运行时拦截工具。noxen 使用 **Frida** 来 hook 正在运行的 Android 进程中的 Java 方法,并映射应用程序组件在运行时的通信方式。它能够捕获攻击面事件(例如 `android.content.Intent` 对象),然后允许您在终端 UI 中检查、修改、转发或丢弃这些事件。 ![Python](https://img.shields.io/badge/python-3.10+-blue) ![许可证](https://img.shields.io/badge/license-GPLv3-green) ![noxen 主页选项卡](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/55c9d7620e170033.png) ## 功能介绍 - 有助于在运行时映射组件通信和攻击面行为。 - 拦截常见的 Android 运行时入口点,例如 `getIntent`、`startActivity`、`sendBroadcast`、`startService` 以及 `PendingIntent` 的创建路径。 - 显示 action、component、data URI、flags、categories、extras、PendingIntent flags、可选的 Java 堆栈跟踪,以及可用的攻击面标签。 - 允许在转发之前修改 intent 的 action、data、categories、flags 和 extras。 - 允许丢弃被拦截的 intent。 - 将捕获的历史记录、结果、过滤器、列和修改过的 intent 快照存储在 `.noxen` 项目文件中。 - 提供独立的拦截和历史记录过滤器。 - 为 Root 后的测试设备提供可选的主页选项卡 `Input ANR bypass (experimental)`,主要用于解决当 noxen 有意保持目标线程时发生的输入分发 (input-dispatch) ANR 问题。 - 使用结构化的日志选项卡,具有对齐的来源/级别列,以及可选的 `Verbose logs` 用于详细的 hook 和绕过诊断。 - 使用 androguard 分析 APK 以生成 hook 配置。 ## 快速开始 克隆仓库: ``` git clone https://github.com/frankheat/noxen.git cd noxen ``` 安装与您在 Android 设备上运行的 `frida-server` 版本相匹配的 Frida Python 包。例如: ``` pip install frida==17.7.3 ``` 然后安装 noxen: ``` pip install . ``` 启动 noxen: ``` noxen ``` 您也可以通过 Python 启动它: ``` python -m noxen ``` 从主页选项卡中选择设备、模式和目标应用程序。使用 `noxen --project session.noxen` 打开现有项目,或使用 `noxen --new-project session` 创建新项目。 如果您还需要 `noxen-analyze` 命令来从 APK 生成特定于应用程序的 hook 定义,请安装可选的分析扩展: ``` pip install ".[analyze]" noxen-analyze app.apk -o hooks.json ``` 仅在开发 noxen 本身时使用可编辑安装: ``` pip install -e . ``` 常规安装包含默认的 hook 配置和打包的 Frida JavaScript 运行时捆绑包,因此在安装后无需从源代码检出目录启动 noxen。 有关所有选项、命令、过滤器和项目管理的完整文档,请参阅 **https://frankheat.github.io/noxen-docs/**。 ## 界面预览 ![Intercept 选项卡](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/cedf908f65170039.png) ![History 选项卡](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/d2548dbe30170045.png) ## 演练应用 配套的 Android 目标应用位于 [noxen-playground](https://github.com/frankheat/noxen-playground) 仓库中。 它在设备上名为 `noxen playground`,使用的包名为 `com.frankheat.noxen.playground`。 在开发 noxen 时,可使用它来验证常见的运行时流程: ``` cd ../noxen-playground ./gradlew assembleDebug ``` 请直接在 Android Studio 中打开 `noxen-playground/`,而不是其工作区父目录。 ## 开发 该 Python 包采用 `src` 布局:可导入的代码位于 `src/noxen/` 中。这使仓库根目录与安装的包分离开来,避免了 `noxen` 命令与本地包目录之间的 shell 歧义。 在更改 Python 代码后,请运行单元测试。在验证 Frida 兼容性时,请使用您支持的 Frida 环境重复相同的检查。例如,本仓库通常使用本地的 Frida 16 和 Frida 17 虚拟环境进行测试: ``` ../frida-16.6.6/bin/python -m compileall -q src/noxen PYTHONPATH=src ../frida-16.6.6/bin/python -m unittest discover -s tests ../frida-17.7.3/bin/python -m compileall -q src/noxen PYTHONPATH=src ../frida-17.7.3/bin/python -m unittest discover -s tests ``` 在更改 `agent/script.js` 或 `agent/system_server.js` 之后,请重新构建提交的 Frida 捆绑包和打包的运行时副本: ``` npm install npm run build ``` 请提交更改后的源脚本、与之匹配的 `*_bundle.js` 文件以及同步的 `src/noxen/runtime/` 副本。不要提交 `node_modules/`。 ## 许可证 noxen 基于 [GNU General Public License v3.0](LICENSE) 发布。
标签:Androguard, Android动态分析, APK分析, Frida Hook, Intent修改, Intent拦截, Java方法Hook, MITM代理, noxen, Python, Root设备, 代码生成, 安卓安全, 安卓漏洞挖掘, 应用安全评估, 攻击面分析, 数据可视化, 无后门, 渗透测试工具, 移动安全测试, 组件通信, 终端用户界面(TUI), 自定义脚本, 运行时拦截, 逆向工具