前言¶
做嵌入式固件逆向的人常遇到同一類問題:設備沒有源碼、廠商已經退場、刷機接口不公開,改錯一個字節就變磚。這類任務裏,”怎麼刷才安全”“怎麼驗證一個假設真的成立”往往比單純的反彙編更棘手。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