blacktop/alf

GitHub: blacktop/alf

一个通过 LLM 与 MCP 驱动 LLDB 的自动化模糊测试与崩溃分析工具,聚焦 Apple Mach-O 目标。

Stars: 2 | Forks: 1

alf Logo

Agentic LLDB Fuzzer

ALF 允许通过模型上下文协议(MCP)驱动 LLDB 来探索崩溃、注入变异钩子并生成有针对性的模糊测试语料库。专注于 **Apple Mach-O 目标(arm64(e))**。 ## 快速开始 ``` # 安装 uv sync --dev # 检查先决条件(lldb-dap、开发者模式等) uv run alf doctor # 选择 LLM 提供商 uv sync --extra anthropic # or openai, google, all-providers export ANTHROPIC_API_KEY=sk-ant-... # 在示例目标上尝试 make -C examples/toy_bug uv run alf analyze --pipeline \ --binary examples/toy_bug/out/toy_bug_fuzz \ --crash examples/toy_bug/crashes/crash_div0 ``` ## 命令 ### 崩溃分类与调试(`alf analyze`) 事后崩溃分析:分类、报告、最小化、语料库生成。 ``` # 完整流程(分类 -> 归类 -> 报告) uv run alf analyze --pipeline --binary ./fuzz_bin --crash ./crash_input # 单独步骤 uv run alf analyze triage --binary ./fuzz_bin --crash ./crash_input uv run alf analyze classify --binary ./fuzz_bin --crash ./crash_input --dap-log ./triage.json uv run alf analyze report --context-json ./triage.json uv run alf analyze minimize ./fuzz_bin ./crash_input uv run alf analyze corpus ./fuzz_bin ./crash_input --llm ``` ### 模糊测试(`alf fuzz`) 三种模糊测试引擎,均位于 `alf fuzz` 下: ``` # LLM 驱动的变异钩子模糊测试(默认) uv run alf fuzz auto ./fuzz_bin --corpus ./seeds # 混合:LLM 冷启动 + 原生 libFuzzer + LLM 分类 uv run alf fuzz hybrid ./fuzz_target --corpus ./seeds --max-time 3600 # Jackalope/TinyInst 混合(macOS 框架模糊测试) uv run alf fuzz jackalope ./harness \ --fuzzer /path/to/fuzzer \ --corpus ./in \ --instrument-module ImageIO \ --target-method _fuzz \ --persist --delivery shmem --threads 4 ``` **Jackalope 前提条件**:从 [googleprojectzero/Jackalope](https://github.com/googleprojectzero/Jackalope) 构建。详见 `docs/JACKALOPE.md`。 ### 交互式 MCP 服务器(`alf server`) 为 Claude/Gemini/GPT 暴露 40+ 个 LLDB 工具以进行交互式控制。 ``` uv run alf server --transport stdio uv run alf server --transport sse --listen-port 7777 ``` ### 主任模式(`alf director`) 崩溃分析的端到端 AI 主任循环: ``` uv run alf director --binary ./fuzz_bin --crash ./crash_input --mode auto ``` ## LLM 提供者 ``` export ANTHROPIC_API_KEY=sk-ant-... # Claude (recommended) export OPENAI_API_KEY=sk-... # GPT export GOOGLE_API_KEY=... # Gemini ``` 未指定 `--provider` 时的自动检测优先级: 1. `ALF_LLM_PROVIDER` 环境变量 2. 存在 `ANTHROPIC_API_KEY` 3. 存在 `OPENAI_API_KEY` 4. 存在 `GOOGLE_API_KEY` 5. 本地服务器探测(端口 11434、1234、8000、8080) 对于本地模型(Ollama/LM Studio): ``` uv run alf fuzz auto ./bin --provider ollama --model llama3.2 ``` ## 二进制文件 | 二进制文件 | 用途 | |------------|------| | `alf` | 主 CLI | | `alf-llm` | LLM 适配器(标准输入/输出 JSON 聊天)。内部用于 `alf analyze classify`。不是 MCP 服务器。 | ## macOS 设置 ``` uv run alf doctor # Check prerequisites ``` 如果看到 `process exited with status -1`,请在系统设置 > 隐私与安全性 > 开发者模式 中启用开发者模式。 ## 配置 将 `.alf.toml` 复制到项目根目录并进行自定义。关键设置包括: - `[provider]` - LLM 提供者与模型 - `[lldb]` - 后端选择(dap/sbapi/lldb_mcp) - `[fuzz]` - 模糊测试参数 - `[director]` - 代理设置 ## 文档 - `docs/ARCHITECTURE.md` - 系统设计 - `docs/QUICKSTART_MCP.md` - MCP 服务器设置 - `docs/JACKALOPE.md` - Jackalope/TinyInst 集成指南 - `examples/README.md` - 示例挂载 - `skills/README.md` - 用于驱动 alf 的 Claude / Claude Code 技能 ## 许可证 Apache 2.0 版权所有 (c) 2025 **blacktop**
标签:Agentic LLDB Fuzzer, AI驱动, Apex, Apple, arm64, Corpus Generation, Fuzzing, LLDB, LLDB DAP, LLM, Mach-O, Model Context Protocol, Mutation Hooks, SEO关键词, Triage, Unmanaged PE, 云资产清单, 可视化界面, 威胁情报, 安全测试, 崩溃分析, 开发安全, 开发者工具, 开源安全工具, 攻击性安全, 机器学习, 模型上下文协议, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 逆向工程平台