停止。在调用任何端点之前,请先完整阅读本 SKILL.md。
analyze-elf 是做什么的?
从编译后的 ELF 二进制文件中逆向工程功能。这不是反汇编器——而是一个功能提取器,回答“这个二进制文件能做什么?”
何时使用
- 理解编译后的 CLI 工具的功能(Bun SEA、Go、Rust、C/C++)
- 提取 CLI 命令、标志和帮助文本
- 恢复状态机、协议模式和事件类型
- 映射 JSON-RPC 方法和 Zod 数据模型
- 生成带有 Mermaid 图表的审查简报走查文档
快速开始
# 主要命令——提取功能,生成走查文档
.pi/skills/analyze-elf/run.sh features /path/to/binary --goal "理解任务系统"
# 通过 /treesitter 进行 AST 分析(较慢但更深入)
.pi/skills/analyze-elf/run.sh features /path/to/binary --ast --goal "查找所有 RPC 方法"
# JSON 格式输出,便于程序化使用
.pi/skills/analyze-elf/run.sh features /path/to/binary --output-format json
# 低层级 ELF 信息(头部、符号、运行时检测)
.pi/skills/analyze-elf/run.sh elf /path/to/binary
# 使用正则表达式提取字符串
.pi/skills/analyze-elf/run.sh strings /path/to/binary --pattern "mission|worker"
命令
| 命令 | 描述 |
|---|---|
features | 主要命令。 提取功能 → 生成包含 Mermaid 图表的走查文档 |
elf | 低层级:头部、段、符号、运行时检测 |
strings | 正则过滤的字符串提取 |
features 提取的内容
| 类别 | 方法 | 示例 |
|---|---|---|
| CLI 命令 | 帮助文本模式匹配 | exec, daemon, mcp |
| 状态机 | 枚举赋值模式(M.State="value") | orchestrator_turn, paused |
| 事件类型 | KH.literal("type_name") 模式 | mission_accepted, worker_completed |
| JSON-RPC 方法 | method: KH.literal("name") 模式 | droid.session_notification |
| Zod 模式 | KH.object({...}) 字段提取 | Feature, WorkerHandoff, State |
| npm 包 | 打包的 package.json 中的 "name": "pkg" | @grpc/grpc-js |
| API 路由 | /api/ 和 /v1/ 路径字面量 | /api/auth/login |
| 类/函数 | 通过 /treesitter 进行 AST 分析(使用 --ast 标志) | MissionRunner, spawnWorker |
组合
/treesitter(AST 分析)
当传递 --ast 时,该技能会:
- 从
.rodata段中提取 JS 源代码字符串 - 过滤出包含 JS 特征的行(函数/类/导入/Zod 模式)
- 将数据块通过
/treesitter parse --language javascript传递 - 提取类、函数和方法签名
/create-walkthrough(自动生成)
features 命令会生成一份审查简报,包含:
- Mermaid CLI 命令树
- Mermaid 状态机图
- Mermaid 事件类型分类
- 带字段类型的模式表
- 风险评估(“可能出什么问题”)
/create-figure
通过 elf 命令生成的 DOT 格式依赖和模块图,可经 /create-figure 渲染。
依赖项
pyelftools— 结构化 ELF 解析httpx— /scillm API 调用typer— CLI 框架loguru— 日志记录- 系统:
binutils(readelf, nm, strings)