[控场AI]
· 6 分钟阅读· 3,336 字

逆向工程复活雪铁龙官方维修文档:静态托管+AI辅助重建全记录

逆向工程复活雪铁龙官方维修文档:静态托管+AI辅助重建全记录

工程师逆向崩溃的雪铁龙经销商软件,重建为覆盖48款车型的免安装多语言静态文档库。

一位软件工程师因手头的雪铁龙官方离线维修工具 DocBackup 频繁崩溃,决定对其进行逆向工程,将内部的 Firebird 数据库、加密图片和多语言 XML 文档全部提取重建,最终做成一个零依赖的纯静态站点。项目覆盖 48 款车型、超过 12.4 万份文档和 10.8 万张插图,支持五种语言,并提供全文检索。技术上,他通过恢复硬编码密钥解密了 Blowfish 加密的图片,并将其重编码为 AVIF 格式,将图片总体积从 4.5 GB 压缩至 1.6 GB;文档则采用客户端渲染 XML 配合词典的方式实现多语言,托管于 GitHub Pages 的「一车一仓库」架构绕过了单仓容量限制。整个项目借助 Claude Code 大幅加速,作者明确划分了「工程师做架构决策、AI 写代码与啃逆向苦力活」的分工边界。构建流水线尚未开源,但作者表示该方法论可迁移至其他品牌的类似濒危软件。

一个濒死的经销商软件被重建为在线文档库

多年前,雪铁龙(Citroën)授权经销商在每次维修时都会使用一款内部应用——Service Box。它几乎囊括了维修工作所需的一切:维修方法、带爆炸图的零件目录、标准工时、技术公告等。为了脱机使用,官方还提供了一份离线副本,名为「DocBackup」,以 Windows 安装包形式发布,内部捆绑了一台 Tomcat 服务器和一个嵌入式 Firebird 数据库。

问题在于,这套老旧的软件极不稳定。一位 Reddit 用户(同时也是软件工程师)表示,自己手上的这份副本频繁崩溃,而市面上又没有其他工具能读取其中的数据。于是他做了一件颇具工程师精神的事:把整套内容逆向工程后,重建成一批纯静态文件,免安装、免部署,直接放到网上供所有人使用。

Reddit 原帖:雪铁龙 Service Box 在线文档项目

项目里到底有什么

重建后的文档库覆盖面相当惊人。据作者介绍,内容涵盖 48 款车型,从早期的 AX、BX、XM,到 C3、C6、DS5,再到 Jumper III 商用车。

具体数据包括:

  • 12.4 万份以上文档:包含带拧紧扭矩的维修方法、分步操作流程、带热点(hotspot)交互图的零件目录、标准工时以及故障记录。
  • 10.8 万张以上插图:即原始零件爆炸图和示意图。
  • 五种语言:法语、英语、德语、西班牙语和意大利语,可在任意文档页面上直接切换。
  • 全文检索:支持按车辆搜索,并能按发动机型号和车身变体过滤——这基本还原了原版软件的核心体验。

对于老雪铁龙车主、独立维修店和 DIY 玩家来说,这类原本只在经销商内部流通的官方级维修资料,价值摆在眼前的事实。

技术拆解:它是怎么做到的

这个项目真正有意思的地方,在于其逆向工程和架构决策。

文档与多语言的处理

原始应用把文档存储为带编码的 XML,并配有 24 套语言词典。作者的做法是:从数据库中同时导出 XML 文档和词典,然后在浏览器端渲染。这样一份文档就能服务所有语言,无需为每种语言各存一份副本,极大压缩了体积。

图片的解密与重编码

图片这块是逆向工程的重头戏。原版插图是经过 Blowfish 加密的 LZMA 压缩文件(.7en 格式),而解密所需的密钥可以从安装包中恢复出来。解密后,作者将图片重新编码为 AVIF 格式,把原本 4.5 GB 的图片体积压到了 1.6 GB,压缩效果显著。

Blowfish 是由密码学家 Bruce Schneier 于 1993 年设计的对称分组加密算法,因其实现简单、速度快且免费开放而在 1990–2000 年代被大量嵌入式和桌面软件采用。LZMA(Lempel–Ziv–Markov chain Algorithm)则是 7-Zip 所使用的无损压缩算法,压缩率极高,但解压时内存占用较大。将两者叠加(先压缩再加密)是当时保护专有资产的常见做法——不需要防御严肃的攻击者,只需足够阻止普通用户直接读取文件。由于密钥硬编码在安装包的可执行文件中,经验丰富的逆向工程师可以通过静态分析或动态调试(如用 x64dbg/IDA 跟踪解密调用)将其还原,这也是本项目数据解锁的核心突破点。

AVIF(AV1 Image File Format)是基于 AV1 视频编解码器的新一代图片格式,由开放媒体联盟(Alliance for Open Media)于 2019 年发布。与 JPEG 相比,同等视觉质量下 AVIF 通常能节省 50% 以上体积;与 WebP 相比也有明显优势。对于零件爆炸图这类含大量细线条和文字的技术插图,AVIF 的高压缩率尤其适用,本项目将 4.5 GB 压至 1.6 GB(约压缩 64%)便是佐证。主流浏览器自 2021–2022 年起已普遍支持 AVIF,因此在静态 Web 场景下无需额外处理。

全静态架构

整个站点没有服务器、没有数据库、也没有 Cookie。作者用一个 GitHub Pages 站点承载查看器(viewer),再为每款车型单独建一个仓库存放其数据——这样设计是为了绕过 GitHub 单仓库的容量限制。全部内容加起来约 6 GB。任何人都可以克隆某款车型的仓库,从而获得一份完整的离线副本。

值得一提的是,站点接入了匿名分析,仅记录页面浏览量、来源链接和基础浏览器信息,不含任何个人数据。作者坦言,这只是为了判断项目是否有人关心、是否值得继续维护。

GitHub Pages 对单个仓库的大小有约 1 GB 的软性限制(官方建议不超过 1 GB,超过 5 GB 则会被联系要求缩减),因此直接将 6 GB 数据放入一个仓库并不可行。「一车一仓库」的拆分策略巧妙绕开了这一限制:每款车型的数据独立成仓,单仓体积可控,同时 GitHub 的免费静态托管和全球 CDN 加速依然可以复用。这种多仓联动的架构也带来了天然的模块化优势——用户只需克隆自己关心的车型,无需下载完整的 6 GB 数据集,离线使用的门槛大幅降低。对于希望复刻此类项目的开发者,值得注意的是 GitHub Pages 的带宽限制(每月约 100 GB 软上限),流量较大时可能需要迁移到 Cloudflare Pages 或 Netlify 等替代方案。

AI 辅助开发:工程师主导,Claude 干活

作者对开发方式的说明也颇具代表性。他直言整个项目是用 **Claude Code「vibe coded」**出来的(并特别点名 Fable 5.1)。

但他也清晰地划定了人与 AI 的分工边界:作为软件工程师,他自己做出了所有关键的技术栈和架构决策——静态托管、一车一仓库、客户端渲染 XML 配合词典。而 AI 则负责写代码,以及逆向工程中大量繁琐的「体力活」。

这其实是当下「AI 辅助编程」一个很务实的样本:AI 并非替代工程师做架构判断,而是在明确方向的前提下,大幅加速实现和啃硬骨头的过程。对于逆向工程这种需要反复试错、处理二进制格式和加密的场景,AI 承担 grunt work 的价值尤为明显。

「Vibe coding」是近年在开发者社区流行的非正式说法,指的是以较为直觉化、对话式的方式与 AI 编程助手协作——描述意图、让 AI 生成代码、快速迭代验证,而非逐行手写。Claude Code 是 Anthropic 推出的命令行 AI 编程工具,能直接读写本地文件、执行命令并在项目上下文中进行多轮推理,适合处理跨文件的复杂任务。逆向工程场景对 AI 尤其友好:解析未知二进制格式往往需要大量「写脚本→观察输出→修正假设」的循环,这类重复性高、逻辑相对局部的任务正是当前大语言模型的优势区间,而对整体架构的判断(数据如何组织、系统如何拆分)仍高度依赖工程师的经验与上下文理解。

尚未开源的构建流水线

目前项目公开的是成品文档库和查看器,但构建流水线本身还没有发布——包括数据库导出、图片解密、渲染器和发布环节。作者表示这部分代码还需要清理,如果有足够的兴趣,之后可能会开源。

他还留下了一个有价值的提示:如果你手上有其他品牌类似的、正在「死去」的经销商软件,这套方法论是可以迁移的。换言之,这不仅是一个雪铁龙车主的福音,也是一份针对「濒危专业软件数据抢救」的通用思路。

小结

这个项目是一个典型的「个人痛点驱动 + 工程能力 + AI 加速」的产物。从崩溃的 Windows 老软件,到免安装、多语言、可离线的静态站点,作者用逆向工程把一份险些无法访问的官方资料重新带回了公共领域。对老车维修生态而言这是实打实的价值,对开发者而言,它也展示了一种理性使用 AI 编程工具的姿态。

项目站点与仓库均已公开,作者也表示乐于回答关于逆向工程和流水线的任何问题。

#雪铁龙维修文档#Service Box 逆向工程#静态托管#Claude Code#AI辅助编程#AVIF 图片压缩#GitHub Pages#开源工具
分享:

相关推荐