http8080/headless-ida

GitHub: http8080/headless-ida

基于 IDA Pro 官方 headless 库的 CLI 二进制分析系统,让 AI 助手无需 GUI 即可通过 shell 命令执行反编译、反汇编和各类逆向分析任务。

Stars: 0 | Forks: 0

# Headless IDA [한국어](#한국어) | [English](#english) ## 简体中文 一个基于 CLI 的二进制分析系统,由 **idalib**(Hex-Rays 官方 headless 库)驱动,无需 IDA Pro GUI。 AI 助手(Claude Code、Cursor 等)通过 shell 调用 `ida_cli.py` 执行自动化二进制分析 —— **无需 MCP**。 ### 架构 ``` User/AI → ida_cli.py → HTTP JSON-RPC → ida_server.py (idalib) ``` - **无 MCP 层** — 纯 HTTP JSON-RPC 通信 - **单线程 HTTPServer** — 符合 idalib 的单线程限制 - **.i64 复用** — 重复分析时可在数秒内重新加载 - **Auth tokens** — 每个实例自动生成 Bearer token ### 为什么不用 MCP? 本项目有意使用普通的 HTTP JSON-RPC 而不是 MCP (Model Context Protocol)。 | | HTTP JSON-RPC (本项目) | MCP | | --- | --- | --- | | **依赖** | 仅 Python 标准库 (`http.server`) | 需要 MCP SDK + 传输层 | | **调试** | 可用 `curl` 单行测试 | 需要 MCP 客户端 | | **AI 兼容性** | 任何具有 shell 访问权限的 AI (Claude Code, Cursor 等) | 仅限 MCP 兼容客户端 | | **上下文窗口** | 零开销 — 仅 bash 命令 | 工具 schema 加载到 AI 上下文中,消耗 token | | **脚本自动化** | 可直接从 bash/Python 脚本调用 | 需要 MCP 客户端库 | | **部署** | 单个 `.py` 文件,零配置 | 需要 server manifest + schema 注册 | | **idalib 限制** | 单线程 `HTTPServer` 1:1 映射 | MCP 异步模型与单线程限制冲突 | ### 系统要求 | 组件 | 版本 | | --------- | ------- | | IDA Pro | 9.1+ (需要 idalib 支持) | | Python | 3.12 或 3.13 (必须与 IDA 捆绑版本匹配) | | OS | Windows 10/11 | ### 安装设置 #### Step 1. 安装 idalib Python 包 ``` pip install "/idalib/python/idapro-*.whl" ``` `.whl` 文件包含在您的 IDA Pro 安装目录中。 #### Step 2. 注册 IDA 路径(选择其一) ``` # 选项 A:运行激活脚本(推荐) python "/idalib/python/py-activate-idalib.py" # 选项 B:设置环境变量 set IDADIR=C:\Program Files\IDA Professional 9.3 ``` #### Step 3. 安装依赖 ``` pip install requests psutil ``` #### Step 4. 验证并初始化 ``` # 检查环境 python tools/ida_cli.py --check # 创建工作目录 python tools/ida_cli.py --init ``` #### Step 5. 配置(可选) 编辑 `tools/config.json` 以设置 IDA 路径和其他选项: ``` { "ida": { "install_dir": "C:/Program Files/IDA Professional 9.3" }, "paths": { "idb_dir": "%USERPROFILE%/.ida-headless/idb", "log_dir": "%USERPROFILE%/.ida-headless/logs" }, "analysis": { "max_instances": 3 } } ``` #### Step 6. 测试运行 ``` # 使用任意二进制文件启动实例 python tools/ida_cli.py start ./samples/target.exe # 检查状态 python tools/ida_cli.py list # 停止 python tools/ida_cli.py stop ``` 如果您看到 `Instance started: id=xxxx` 并且实例出现在 `list` 中,则设置完成。 ### AI 集成 环境设置完成后,AI 助手通过 shell 使用 `ida_cli.py` 命令。您不需要记住这些 —— AI 会处理。 #### Claude Code 1. 将 skill 文件复制到您的项目: ``` # 创建技能目录 mkdir -p .claude/commands # 复制技能文件 cp /tools/ida_cli.py tools/ cp /.claude/commands/ida.md .claude/commands/ ``` 2. 将 `CLAUDE.md` 复制到您的项目根目录(AI 读取此文件作为命令参考): ``` cp /CLAUDE.md . ``` 3. 在 Claude Code 中使用: ``` /ida ./target.so ``` Claude 将自动启动实例,分析二进制文件,并报告发现。 #### 其他 AI 工具(Cursor、GPT 等) 任何具有 shell/终端 访问权限的 AI 都可以直接调用 `ida_cli.py`。将 `CLAUDE.md` 内容添加到您的 AI 的系统提示或项目上下文中,以便它知道可用的命令。 ### 命令参考 命令主要由 AI 使用,此处列出仅供参考。 #### 实例管理 | 命令 | 描述 | | ------- | ----------- | | `start ` | 启动分析实例 | | `stop ` | 停止实例 | | `wait ` | 等待分析完成 | | `list` | 列出运行中的实例 | | `status []` | 显示实例状态 | | `logs ` | 查看实例日志 | | `cleanup` | 清理陈旧实例 | #### 分析(24 个 API) | 命令 | 描述 | | ------- | ----------- | | `functions` | 列出函数 | | `strings` | 列出字符串 | | `imports` / `exports` | 列出导入/导出 | | `segments` | 列出段 | | `decompile ` | 反编译函数 | | `disasm ` | 反汇编 | | `xrefs ` | 交叉引用 | | `find_func ` | 搜索函数 | | `func_info ` | 函数详情 | | `bytes ` | 读取原始字节 | | `find_pattern ` | 字节模式搜索 | #### 修改 | 命令 | 描述 | | ------- | ----------- | | `rename ` | 重命名符号 | | `comment "text"` | 添加注释 | | `save` | 保存数据库 | #### 常用选项 | 选项 | 描述 | | ------ | ----------- | | `--json` | JSON 输出 | | `-i ` | 指定实例 ID | | `-b ` | 按二进制名称自动选择 | | `--out FILE` | 将输出保存到文件 | ### 支持的格式 PE, ELF, Mach-O, FAT, .so, dylib, Raw binary, Intel HEX, SREC 反编译器: x86/x64, ARM/ARM64, MIPS, PowerPC, RISC-V ### 许可证 **Apache License 2.0** — 参见 [LICENSE](LICENSE)。 需要单独有效的 **IDA Pro 许可证**。Hex-Rays 反编译器许可证可选。 ## 韩语 IDA Pro GUI 없이 **idalib** (Hex-Rays 공식 헤드리스 라이브러리)을 사용하여 CLI에서 바이너리 분석을 수행하는 시스템. AI 어시스턴트(Claude Code, Cursor 등)가 shell로 `ida_cli.py`를 호출하여 자동 바이너리 분석 — **MCP 불필요**. ### 架构 ``` User/AI → ida_cli.py → HTTP JSON-RPC → ida_server.py (idalib) ``` - **MCP 레이어 없음** — 순수 HTTP JSON-RPC 통신 - **단일 스레드 HTTPServer** — idalib 단일 스레드 제약 준수 - **.i64 재사용** — 반복 분석 시 수 초 만에 로드 - **인증 토큰** — 인스턴스별 Bearer token 자동 생성 ### 为什么不使用 MCP? 이 프로젝트는 MCP(Model Context Protocol) 대신 순수 HTTP JSON-RPC를 의도적으로 사용합니다. | | HTTP JSON-RPC (이 프로젝트) | MCP | | --- | --- | --- | | **의존성** | Python 표준 라이브러리만 (`http.server`) | MCP SDK + transport 레이어 필요 | | **디버깅** | `curl` 한 줄로 테스트 가능 | MCP 지원 클라이언트 필요 | | **AI 호환성** | shell 접근 가능한 모든 AI (Claude Code, Cursor 등) | MCP 호환 클라이언트에만 종속 | | **컨텍스트 윈도우** | 오버헤드 없음 — bash 명령어만 사용 | tool schema가 AI 컨텍스트에 로드되어 토큰 소모 | | **스크립트 자동화** | bash/Python에서 바로 호출 가능 | MCP 클라이언트 라이브러리 필요 | | **배포** | `.py` 파일 하나, 별도 설정 없음 | 서버 manifest + 스키마 등록 필요 | | **idalib 제약** | 단일 스레드 `HTTPServer`가 1:1 매핑 | MCP async 모델이 단일 스레드 제약과 충돌 | ### 需求 | 항목 | 버전 | | ---- | ---- | | IDA Pro | 9.1 이상 (idalib 지원 필수) | | Python | 3.12 또는 3.13 (IDA 번들 버전과 일치 필수) | | OS | Windows 10/11 | ### 环境搭建 #### Step 1. 安装 idalib Python 包 ``` pip install "/idalib/python/idapro-*.whl" ``` IDA Pro 설치 디렉토리에 `.whl` 파일이 포함되어 있습니다. #### Step 2. 注册 IDA 路径(任选其一) ``` # 方法 A:运行激活脚本(推荐) python "/idalib/python/py-activate-idalib.py" # 方法 B:设置环境变量 set IDADIR=C:\Program Files\IDA Professional 9.3 ``` #### Step 3. 安装依赖包 ``` pip install requests psutil ``` #### Step 4. 验证及初始化 ``` # 验证环境 python tools/ida_cli.py --check # 创建工作目录 python tools/ida_cli.py --init ``` #### Step 5. 配置(可选) `tools/config.json`에서 IDA 경로 등 설정: ``` { "ida": { "install_dir": "C:/Program Files/IDA Professional 9.3" }, "paths": { "idb_dir": "%USERPROFILE%/.ida-headless/idb", "log_dir": "%USERPROFILE%/.ida-headless/logs" }, "analysis": { "max_instances": 3 } } ``` #### Step 6. 运行测试 ``` # 使用任意二进制文件启动实例 python tools/ida_cli.py start ./samples/target.exe # 检查状态 python tools/ida_cli.py list # 终止 python tools/ida_cli.py stop ``` `Instance started: id=xxxx`가 출력되고 `list`에 나타나면 환경 구축 완료. ### AI 集成 환경 구축 완료 후, AI 어시스턴트가 shell로 `ida_cli.py` 명령어를 호출합니다. 사용자가 명령어를 외울 필요 없습니다. #### Claude Code 프로젝트에 스킬 파일을 복사합니다: ``` # 创建技能目录 mkdir -p .claude/commands # 复制技能文件 cp /tools/ida_cli.py tools/ cp /.claude/commands/ida.md .claude/commands/ ``` 프로젝트 루트에 `CLAUDE.md` 복사 (AI가 명령어 레퍼런스로 참조): ``` cp /CLAUDE.md . ``` Claude Code에서 사용: ``` /ida ./target.so ``` Claude가 자동으로 인스턴스를 시작하고, 바이너리를 분석하고, 결과를 보고합니다. #### 其他 AI 工具 (Cursor, GPT 等) shell/터미널 접근이 가능한 AI면 `ida_cli.py`를 직접 호출할 수 있습니다. `CLAUDE.md` 내용을 AI의 system prompt나 프로젝트 컨텍스트에 추가하면 됩니다. ### 命令参考 명령어는 주로 AI가 사용하며, 참고용으로 정리합니다. #### 实例管理 | 명령어 | 설명 | | ------- | ---- | | `start ` | 분석 인스턴스 시작 | | `stop ` | 인스턴스 종료 | | `wait ` | 분석 완료 대기 | | `list` | 실행 중인 인스턴스 목록 | | `status []` | 인스턴스 상태 확인 | | `logs ` | 인스턴스 로그 보기 | | `cleanup` | 비정상 인스턴스 정리 | #### 分析 (24 个 API) | 명령어 | 설명 | | ------- | ---- | | `functions` | 함수 목록 | | `strings` | 문자열 목록 | | `imports` / `exports` | imports/exports 목록 | | `segments` | 세그먼트 목록 | | `decompile ` | 함수 디컴파일 | | `disasm ` | 디스어셈블 | | `xrefs ` | 크로스 레퍼런스 | | `find_func ` | 함수 검색 | | `func_info ` | 함수 상세 정보 | | `bytes ` | Raw 바이트 읽기 | | `find_pattern ` | 바이트 패턴 검색 | #### 修改 | 명령어 | 설명 | | ------- | ---- | | `rename ` | 심볼 이름 변경 | | `comment "text"` | 주석 추가 | | `save` | 데이터베이스 저장 | #### 通用选项 | 옵션 | 설명 | | ---- | ---- | | `--json` | JSON 출력 | | `-i ` | 인스턴스 ID 지정 | | `-b ` | 바이너리 이름으로 자동 선택 | | `--out FILE` | 결과를 파일로 저장 | ### 支持的格式 PE, ELF, Mach-O, FAT, .so, dylib, Raw binary, Intel HEX, SREC 디컴파일러: x86/x64, ARM/ARM64, MIPS, PowerPC, RISC-V ### 许可证 **Apache License 2.0** — [LICENSE](LICENSE) 참조. 이 프로젝트를 사용하려면 별도로 유효한 **IDA Pro 라이선스**가 필요합니다. Hex-Rays 디컴파일러 라이선스는 선택 사항.
标签:AI辅助, Amass, API, Claude, Cursor, CVE检测, Findomain, Hakrawler, Headless, idalib, IDA Pro, JSON-RPC, Python, T1053, T1059, T1071, 二进制分析, 二进制安全, 云安全监控, 云安全运维, 云资产清单, 威胁狩猎, 恶意代码分析, 情报收集, 无GUI, 无后门, 服务器, 漏洞研究, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 配置文件, 隐私保护, 静态分析