反解 NEC V20 的微码:从 56 亿像素的芯片照到 CNN 识别 ROM 位
来源: martypc.blogspot.com — 2026-09-09
概述
MartyPC 作者委托 InfoSecDJ 为一颗 NEC V20(由 Sharp 代工的二级来源芯片)拍摄裸片,得到 5.6 亿像素、70478×80672 的超高分辨率拼接图,芯片中央下方的主微码 ROM 阵列是 258×116、共 29928 位,恰好能被 V20 的 29 位微码字长整除(这暗示 1032 个微码字,比预期的 1024 多)。作者用 MaskRomTool 标出每个位的坐标并导出 JSON,再用 Python 裁出 42×42 的小图交给 PyTorch 训练 CNN 判定 0/1,只手工标注了一千多位就训到约 0.99 的验证 F1,最终仅剩 4 位歧义。解码还原出微码字格式与解码 PLA 的掩码匹配逻辑,还解释了 V20 与 V30 如何共用同一套微码掩码、靠金属层切断一根引线来区分型号。
核心要点
- 裸片拼接图高达 5.6 亿像素(70478×80672),主微码 ROM 阵列 258×116、共 29928 位。
- 用 MaskRomTool 标定位坐标并导出 JSON,再用 Python 裁出 42×42 像素小图。
- 手工标注一千多位后训练 PyTorch CNN,验证 F1 达约 0.99,最终只剩 4 位歧义。
- 解码 PLA 同样以晶体管构成 AND 门,用「不关心」位让一批指令共享同一段微码。
- V20 与 V30 共用同一套微码掩码,靠金属层切断一根引线区分型号,这也解释了微码字数之谜。
金句
既然我们能用肉眼在 ROM 里认出位,那我们就能把 ROM 内容提取出来。只是有个小问题——阵列里有 29928 个位。
👍 0
👎 0
返回 Lobsters 首页