前言¶
做嵌入式固件逆向的人常遇到同一类问题:设备没有源码、厂商已经退场、刷机接口不公开,改错一个字节就变砖。这类任务里,”怎么刷才安全”“怎么验证一个假设真的成立”往往比单纯的反汇编更棘手。gladess1102/legacy-firmware-reversing 把一套在 2004 年夏普 MP-B300(SigmaTel STMP3560 · Motorola DSP56004 · Sanyo LV24002)上跑过 26 版真机固件的实战经验整理成了可交付的 Agent Skill 与 DSH 插件。插件名字里的 “reversing” 指的是整套工作流,不是某个单一工具。
这是什么¶
一句话定位:一套面向黑盒老设备的固件逆向、全量汉化与安全刷写方法论,以 Agent Skill 指南和 DSH 插件两种形态分发。
- 维护者:Gladess1102(gladess,小G),设备持有人,26 次刷机的真机操作员
- 分类:工作流(社区目录 SkillHub 收录)
- 星标:1(截至 2026-11)
- 许可证:MIT;不隶属 Sharp、SigmaTel/Freescale、Sanyo
- 来源背景:方法提炼自一次多 Agent 协同对 MP-B300 的黑盒攻坚,完整战役记录在仓库
case-studies/MP-B300.md
仓库结构上,SKILL.md 是 Agent Skill 入口,references/ 是五篇深度指南,templates/ 提供 PROJECT-STATE、实验登记、safe_flasher.py、surrogate_stub.S 等模板,lib/ 与 bin/ 构成插件代码和独立 CLI。
核心功能¶
方法论拆成五根支柱,这是插件的主体内容:
- 零变砖的协议逆向。厂商 SCSI 命令解析,USB BOT 短包终止陷阱,扇区尾标白名单,保护页断言,回滚链要求在每次刷写前就预设好。
- 私有资源树重建与全量汉化。24-bit 二进制描述符解析,视觉锚点恢复字形映射;MP-B300 项目把 6,763 个 GB2312 字形原位注入日文字库,镜像总大小一个字节不变。
- 异构 DSP 反汇编 + PC JIT 仿真替身桩。不逆向整个内核,只桩掉调用点,把模块放到 xemu-project/dsp56300 上运行,对两个临界输入(89.9 vs 90.0 MHz)做全内存 diff。
- 证伪优先于推断。每个假设靠单变量修改加人耳观测裁决,用 EXPERIMENTS 登记纪律区分”现象变了”和”结论错了”。
- 多 Agent 抗漂移协同。以 PROJECT-STATE.md 作为单一事实源,三个异构 Agent(DeepSeek、Gemini、GLM)接力同一战役而不重复彼此的死胡同。
代码层面,插件注册一个 fw-recon cordis service:安全闸门(尺寸/保护页/扇区尾标白名单)、双镜像 diff、实验格式化器,均在 lib/core.js 中实现为纯函数。插件声明零运行时依赖,Node 版本要求 >=18。
安装与启用¶
作为 DSH 插件安装(命令来自仓库 README 原文):
# 安装包并通过自带的 cordis.patch.yml 自动挂载
dsh plugin --profile <profile> add github:Gladess1102/legacy-firmware-reversing
# 或使用本地目录
dsh plugin --profile <profile> add /absolute/path/to/legacy-firmware-reversing
安装后需要重启 DSH。插件注册的 fw-recon service 是供其它插件通过 ctx.get("fw-recon") 消费的,它不会向模型的工具列表新增工具。下面的 CLI 独立于 DSH,装不装插件都能跑。
桌面 App 用户注意:自 DSH 0.2.1-rc.2 起 CLI 会硬编码拒绝 desktop profile。请通过 App 的 GUI 插件页安装,或进入 ~/.dsh/profiles/desktop 用 pnpm add 直装并把包写进该 profile 的 dsh.profile.bundles。两种方式装完都要重启 App。
实验登记写入配置项 workDir,该值默认为空,不会在任何人的桌面上凭空建目录。首次调用 logExperiment 之前,先设置 FW_RECON_WORKDIR 或填写插件设置卡。
作为 Agent Skill 使用更简单:把仓库放进 skills 目录(或软链),或在面对黑盒固件任务时把 SKILL.md 作为上下文喂给 Agent,references/ 按需加载。
典型用法¶
独立 CLI 提供三个子命令,命令与示例均来自仓库 README:
# 刷前安全闸门,断言尺寸 / 保护页 / 扇区尾标白名单
fw-recon check --img new.bin --baseline factory.bin
# 双镜像 diff,剥离扇区尾标让代码对比干净
fw-recon diff v10.bin v27.bin --strip
# 证伪实验登记,强制"先写预期、后记观测"
fw-recon log --id E27 --hypothesis "upper-limit checks gate the mute" \
--action "NOP 2 jlt at 0x16b03/0x16b2d" \
--expected "cliff moves above 108MHz" \
--observed "cliff still at 90.0, boot normal" \
--verdict falsified
check 是在碰设备之前的最后一道闸门:任何一条断言不过,刷写就该停下来。log 强制 expected-before-observed 顺序,是这套方法论第四根支柱的落地形式。
回滚链同样有对应骨架:templates/safe_flasher.py 把断言放在操作设备之前执行,templates/surrogate_stub.S 是 DSP56300 桩模板,附带已知暗坑清单。
适用场景与注意¶
适合的是:手头有一台无源码、无公开刷机文档的老设备,需要在不赌运气的前提下做协议分析、资源改位、汉化注入或 DSP 侧假设验证;或者多个 Agent 分工做同一套实验,需要一个单一事实源防止相互踩坑。
不适合的是:期望插件往模型工具列表里加一个”一键刷机”按钮。它不提供此类工具,刷写骨架是自己在设备上跑的 Python 脚本,风险判断仍由人承担。
注意事项写全:
- 插件以当前 DSH 进程的权限运行,安装前先读一遍
lib/与bin/下的源码,确认没有越权操作再启用。 - 许可证为 MIT,商用可用;仓库不重新分发厂商文档,CREDITS.md 中的实名致谢在 fork 时要保留。
workDir默认未设置,别指望它默认生效;不配置的话实验日志无处落盘。desktopprofile 在新版 DSH 里走 GUI 安装,先看自己的 DSH 版本再决定走哪条路径。- 仓库星标只有 1,项目维护状态和活跃度需要自行评估后决定是否长期依赖。
社区目录 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系,本文只把它当作一个收录入口来写。
结尾¶
这套插件的价值不在于提供了某个神秘工具,而在于把”零变砖刷写”“证伪优先”“多 Agent 抗漂移”这几条规定成了具体的操作规范和模板文件。如果你的工作场景正好落在黑盒老固件上,可以从 references/ 的五篇指南入手,再用 fw-recon 的 check/diff/log 三件套把纪律落到本地。
- 目录页:https://www.skillhub.cn/plugins/Gladess1102/legacy-firmware-reversing
- GitHub:https://github.com/Gladess1102/legacy-firmware-reversing