LeanREA:让编程 Agent 用本机 CLI 做授权软件分析
程序员鱼皮在 X 原帖中分享了一个名为 LeanREA 的开源 Skill:它可以通过一条命令添加到 Claude Code、Codex、Cursor 等支持 Skills 的编程 Agent 中,并提醒使用者“只拆自己有权分析的软件”。这条帖子还指向 aicodeking/leanrea 仓库。
LeanREA 的思路不是再给 Agent 增加一层工具服务,而是告诉模型:面对不同类型的软件制品,先用哪些本机命令做低成本盘点,再怎样沿着符号、字符串、文件和调用关系找证据。它适合已经有本地 CLI 工具、希望 Agent 按更有条理的路径检查自己有权分析的软件的开发者。它不会让模型自动拥有所有逆向分析工具,也不会让对二进制的结论自动变成事实。
LeanREA 是什么
REA(Reverse Engineer Anything)是一套更完整的逆向分析工具项目。LeanREA 借鉴了 REA 文档和实践中的一些方法,把目标缩小为一份简短的 SKILL.md:Agent 通过 Bash 调用 file、strings、nm、otool、readelf、rg 等本机命令,不需要 LeanREA 自己提供 MCP Server 或数百个新增工具定义。
两者的差别主要在工作方式,而不是“有没有逆向能力”:REA 提供更多结构化工具;LeanREA 则提供如何选择现有命令、如何批量盘点和如何沿证据继续追踪的指引。能否执行某项分析,仍取决于操作系统、已安装工具、Agent 的终端权限和目标文件类型。
| 项目 | LeanREA 的做法 | 实际含义 |
|---|---|---|
| 分发 | 一份短 Skill 文件 | 安装简单,但复杂分析仍需要本机工具 |
| 工具调用 | 使用 Agent 已有的 Bash / CLI 能力 | 不新增 MCP 工具定义,不代表完全没有环境依赖 |
| 分析路径 | 先识别文件类型,再做便宜的盘点,必要时继续深入 | 减少一上来就反编译或吞入大文件的情况 |
| 结论格式 | 标注观察到的证据、推断和未知项 | 避免把静态线索说成运行时已验证的事实 |
它怎样引导一次分析
LeanREA 的 Skill 文件先给出几条通用约束,再按目标格式选择工具路线。它建议从副本开始工作;先用 file 和魔数判断目标类型;先做导入、导出、字符串、依赖等低成本盘点;需要深入时再围绕一个具体符号或字符串查看局部内容,而不是一次读完整个压缩包或混淆后的大文件。
例如,Electron 应用可以从 app.asar 的文件清单、package.json 入口、.webpack 隐藏目录、preload、IPC 通道和 contextBridge 逐步追踪;Mach-O 程序可以先检查架构、动态库、导入导出、字符串与签名信息;Go 可执行文件则常能直接用 go version -m 获得构建工具链和依赖线索。其他路由覆盖 ELF/PE、Rust、.NET、Android APK、Flutter、WASM、SQLite、pcap/HAR、固件与网站等类型。
这里的关键是“先选一条便宜且贴近目标的证据路径”。比如 Agent 要判断某个 Electron 功能如何从界面到主进程,不一定需要遍历所有 JavaScript:可以先定位入口与 renderer/preload 边界,再搜 IPC 注册和调用点,最后核对相关函数附近的实现。具体命令需要按系统和目标版本调整;Skill 中的示例不是通用的安全扫描器或完整取证流程。
安装与使用
原帖给出的安装方式是:
npx skills add aicodeking/leanrea
Skills CLI 会提示选择要安装到哪些支持的 Agent。仓库还列出用户级安装、指定 Agent 和手工复制 SKILL.md 的方式;具体可选项以安装器与 Agent 当前版本为准。若希望先审查内容,可以直接浏览仓库中的 leanrea/SKILL.md,确认其命令范围和对本地文件的操作约定,再决定是否安装。
安装后可以在 Agent 中给出明确、范围有限的任务,例如:
检查我维护的这个 Electron 应用副本中,搜索功能从界面到主进程经过哪些调用。
先列出可观察到的文件、入口和 IPC 证据;把推断单独标出;没有证据的地方写未知,不要运行应用或改动副本。
建议把目标文件放在可丢弃的副本或隔离目录内,说明操作系统和版本、允许读取的路径、是否允许安装额外工具,以及本次任务不允许触碰的文件。需要运行程序、访问网络或安装工具时,先确认这些动作属于你的授权范围,再让 Agent 继续。
结果中可以要求保留三种证据状态:
- 已观察:直接来自文件、符号、偏移、字符串或命令输出,可以指出具体位置。
- 推断:根据多个线索推出来,但没有直接观察到对应行为;说明推理链和替代解释。
- 未知:当前文件和工具无法回答,或者静态分析无法确认运行时行为。
例如,导入列表里出现网络库只能说明程序包含或链接了相关能力线索,不能单凭它断言程序一定会连接某个服务。静态分析也不能代替在可控环境中的运行观察、版本核对或独立复现。
作者的基准测试应该怎样看
LeanREA 仓库附有 2026 年 10 月 16 日的基准说明和逐次运行结果。作者在 Claude Code headless、Sonnet 5.5、macOS arm64 环境下,对 4 类任务分别以三种配置各运行三次,共 36 次:不加 Skill、使用 LeanREA、使用 REA MCP 加其 Skill。任务包括 Electron 应用调用链、原生扩展信息、Go 构建信息,以及从反汇编追踪本地 socket 协议。
按仓库汇总的 12 次运行结果,LeanREA 总耗时 388 秒、费用 2.17 美元、答案评分 74/75;REA 对照组为 627 秒、3.36 美元、75/75。作者报告 LeanREA 相对 REA 少用约 38% 时间和 35% 费用。与不加 Skill 的组相比,LeanREA 总耗时也更低,但每个任务表现并不一致:例如原生任务中,不加 Skill 的运行中位数反而更快、费用更低。
这些数字只能作为项目作者在特定任务、工具、模型、机器和判分规则下的实验结果。每个实验格只有三次重复,模型只有一个,目标文件也只有几个;答案由作者手工制作标准答案,再用正则评分。仓库指出 LeanREA 有一次把 v2 IPC 通道写成 v1 通道,严格评分少一分;作者认为两种通道都存在,因此将结果解释为近似相同准确度。读者应同时看到严格得分差异与作者的解释,而不要把宣传表格当成独立评测或所有项目上的效率保证。
授权、隐私和安全边界
逆向分析工具本身可用于维护、自有软件审计、互操作性研究、恶意软件防御和兼容性排错,也可能被用于未授权的软件拆解、隐私侵犯或规避访问控制。原帖明确提醒只分析自己有权分析的软件,这应当成为使用前提:确认你对目标拥有所有权、管理权限或明确许可,并遵守适用的协议、法律和组织政策。
即使目标文件可以公开下载,也不代表其中的账户数据、通信记录、密钥、个人信息和第三方代码都可以被复制、外传或公开。分析私有软件时,不要把完整二进制、配置、数据库、客户数据或凭据直接发给远程模型;尽可能先做本地提取和脱敏,只分享回答问题所必需的最小证据片段。对下载来的 Skill 和命令行工具也应先审阅来源与内容,避免把未知代码放入拥有宽泛文件权限的开发环境中。
对真实运行行为有疑问时,静态结论应保留边界。只读文件检查不能证明程序实际执行了某条路径;单次运行也不能代表所有配置和版本。更可靠的分析记录应包含目标版本与哈希、使用过的工具、观察位置、运行环境和仍未验证的假设。
结语
LeanREA 最值得借鉴的地方,是把 Agent 的逆向分析拆成一条可审查的路径:先识别目标、做小范围盘点,再沿证据推进,并明确区分观察、推断和未知。短 Skill 降低了指引的上下文成本,但结果质量仍取决于模型、工具、目标版本和使用者是否认真复核。
如果你要把分析结果整理为报告,可以再用 GPT88 的统一大模型接口将本地证据按“已观察 / 推断 / 未知”归类、生成待验证问题或润色说明;具体 API 调用以Chat Completions 文档为准。含有闭源程序细节、凭据、个人数据或未获授权的材料,不应为了方便而上传给模型。最终结论应保留证据出处,并由有权限的人员核验。
来源
- 程序员鱼皮,X 原帖:LeanREA 可用于 Claude Code、Codex、Cursor,发布于 2026 年 10 月 20 日。原帖内容为项目推荐与安装提示,并强调只分析获授权的软件。
- aicodeking/leanrea GitHub 仓库:README、Skill 文件、基准说明及原始运行数据。项目声明采用 MIT License。
- LeanREA Skill 文件:工具路由、分析原则与命令示例。
- REA GitHub 仓库:LeanREA README 中作为对照的上游相关项目。
අදාළ මාර්ගෝපදේශය
Claude Opus 5.5 vs GPT-6 Sol:程序员鱼皮的 5 个实战测评