Bender1011001/quadzilla-adrenaline-reversed

GitHub: Bender1011001/quadzilla-adrenaline-reversed

对 Quadzilla Adrenaline 柴油调校器进行完整固件逆向工程、协议解析和参数映射的开源项目,全程由 AI 完成分析工作。

Stars: 2 | Forks: 0

⚡ Quadzilla Adrenaline — 逆向工程

针对 Quadzilla Adrenaline 直列式柴油机调校器的完整固件逆向工程、协议文档和自定义调校工具包

完全由 AI(Claude, Anthropic — 以 "Antigravity" 代理身份运行)完成

ARM7TDMI 48KB Flash 57 Functions 117 AIDs X2com BLE By AI

## 这是什么? 本仓库包含 [Quadzilla Adrenaline](https://www.quadzillapower.com/) 直列式柴油机调校器 (DADR9802) 的**完整逆向工程**,针对搭载 VP44 喷油泵的 1998-2002 款 Dodge Ram Cummins 24 气门卡车。 **这里的所有内容均由 AI 生成** —— Claude (Anthropic),以 "Antigravity" 代理身份自主运行。人类提供了硬件、文件和方向。AI 执行了所有分析、脚本编写、反编译和文档编写工作。 ### 我们破解了什么 | 组件 | 结果 | |-----------|--------| | 🔓 **固件加密** | XOR 密码链 —— 从 .NET DLL 中提取密钥,并经过往返验证 | | 🧠 **固件代码** | 57/60 个函数被反编译为 **125KB 的 C 代码** | | 📡 **BLE 协议 (X2com)** | 完整解析:CRC-8、帧格式、6 种消息类型、状态机 | | 🔌 **USB 协议** | 15 个操作码,921600 波特率,完整的刷写序列 | | 🎛️ **参数 (AID)** | 从 14 个车辆配置文件中映射出 117 个参数 —— 包括 2 个隐藏参数 | | 📱 **iQuad 应用程序** | APK 反编译,原生库(62 个函数,224KB C 代码) | ## 仓库结构 ``` quadzilla_rev/ ├── README.md ← You are here ├── CONTEXT.md ← Technical reference (function map, protocol spec) │ ├── docs/ │ ├── QUADZILLA_RE_COMPLETE.md ← 📖 THE MAIN DOCUMENT — full RE writeup from AI's perspective │ ├── AID_REFERENCE.md ← Complete parameter database (117 AIDs) │ ├── FINDINGS.md ← Initial findings summary │ ├── quadzilla_firmware_analysis.md ← Firmware architecture notes │ └── quadzilla_custom_firmware_findings.md ← Custom firmware possibilities │ ├── tools/ │ ├── firmware_crypto.py ← 🔑 Encrypt/decrypt firmware (XOR cipher-chain) │ ├── quadzilla_tool.py ← 🔌 USB serial communication tool │ ├── analyze_binary.py ← 🔍 Raw binary analysis (find functions, ISA, memory map) │ ├── diff_profiles.py ← 📊 Vehicle profile differ (finds hidden AIDs) │ ├── analyze_firmware.py ← Firmware structure analysis │ └── analyze_calibration.py ← Calibration table mapper │ ├── ghidra/ │ └── scripts/ │ ├── ghidra_decompile_all.py ← ⭐ THE script — decompiles all 57 firmware functions │ ├── ghidra_nuclear.py ← Nuclear approach for mixed ARM/Thumb analysis │ ├── ghidra_x2com.py ← X2com library decompilation │ └── (6 more iterative scripts) ← Earlier attempts, kept for reference │ ├── vehicles/ ← 14 vehicle profile JSONs from Quadzilla's server │ ├── decompiled_firmware_full.c ← 💎 All 57 firmware functions (125KB) ├── decompiled_x2com.c ← 💎 All 62 X2com protocol functions (224KB) │ └── analysis/ ← Intermediate outputs, scratch scripts, raw data ``` ## 主文档 **📖 [docs/QUADZILLA_RE_COMPLETE.md](docs/QUADZILLA_RE_COMPLETE.md)** —— 完整的逆向工程报告,以 AI 的第一人称视角撰写。涵盖内容: 1. **我是如何进入的** —— 4 个攻击面(Windows 更新程序、加密固件、Android 应用程序、原生 BLE 库) 2. **加密机制** —— 为什么它算不上真正的加密(随附密钥的 XOR 密码链) 3. **固件架构** —— 内存映射、启动序列、60 个函数及其用途 4. **Ghidra 的挣扎** —— 出了什么问题、6 个失败的脚本,以及最终奏效的终极方案 5. **X2com BLE 协议** —— 完整规范:CRC-8(多项式 0x1D)、帧格式、6 种消息类型 6. **USB 串行协议** —— 15 个操作码及完整的固件刷写序列 7. **AID 参数系统** —— 117 个可调参数、4 段架构、隐藏功能 8. **自定义固件的可能性** —— 从参数微调到完整新功能的 5 个层级 9. **我弄错了什么** —— 诚实的错误与经验教训 ## 快速开始 ### 解密固件 ``` # 从 X2Updater 的 Quadzilla.dll 中提取密钥,然后: python tools/firmware_crypto.py decrypt FirmwareUpdate.qz decrypted.hex --key-file key.pwk # 验证 roundtrip python tools/firmware_crypto.py verify FirmwareUpdate.qz --key-file key.pwk ``` ### 与调校器通信 (USB) ``` pip install pyserial # 获取 module info python tools/quadzilla_tool.py info # 读取 feature codes python tools/quadzilla_tool.py features # 扫描响应的 AID python tools/quadzilla_tool.py scan --start 0 --end 255 ``` ### 反编译固件 (Ghidra) ``` # 需要 Ghidra 11.3.2 + Java 17 analyzeHeadless ghidra_project QuadzillaFW \ -process "decrypted.hex" \ -noanalysis \ -postScript ghidra/scripts/ghidra_decompile_all.py ``` ### 对比车辆配置文件 ``` python tools/diff_profiles.py # 输出所有 117 个 AID 及其名称、单位、范围以及使用它们的车辆 ``` ## 关键发现 ### “加密” ``` E[i] = P[i] ^ KEY[i % 8] ^ E[i-1] (that's it) ``` 密钥被打包在 .NET DLL 内部。没有代码签名。没有完整性检查。修改固件后刷写不会报错。 ### 增压燃油曲线 (AID 113-136) 调校器具有一条**由增压压力索引的 24 点用户可调燃油曲线**: ``` AID 113: Fueling at 0 PSI (50-150%) AID 114: Fueling at 1 PSI (50-150%) ... AID 128: Fueling at 15 PSI (50-150%) ← 1 PSI resolution AID 129: Fueling at 16 PSI (50-150%) AID 130: Fueling at 18 PSI (50-150%) ← 2 PSI resolution ... AID 136: Fueling at 30+ PSI (50-150%) ``` 100% = 原厂燃油量。每个点均可通过 BLE 或 USB 独立调整。 ### 隐藏参数 通过将 QZTEST 诊断配置文件与标准 V2 配置文件进行对比,我发现了 2 个被 Quadzilla 对普通用户隐藏的 AID: - **AID 145**:AVG MPG Reset —— 重置燃油经济性计数器 - **AID 181**:Average MPG —— 读取计算出的平均 MPG ### 19KB 的可用 Flash 空间 固件使用了 48KB Flash 中的 22KB。在 0xB200-0xFCFF 处有 **19KB 的未使用空间** —— 足以实现大量的自定义功能: - 双模式自动调校(巡航 MPG + 最大功率) —— 约 4KB - PID 增压控制器 —— 约 1KB - 数据记录器 —— 约 3KB - 起步控制 —— 约 1KB - 翻车模式保护 —— 约 1KB ## 自定义固件可能性 | 层级 | 内容 | 风险 | 难度 | |------|------|------|-----------| | **1** | 修改 AID 参数(燃油曲线、限制、正时) | 无 | 简单 | | **2** | 编辑标定表(燃油/正时映射) | 中等 | 中等 | | **3** | 修补代码(基于速度的燃油喷射、绕过检查) | 高 | 困难 | | **4** | 在空闲 Flash 中添加新功能(自动调校、PID、日志记录) | 高 | 困难 | | **5** | 完全自定义固件(双模式、自适应) | 极高 | 专家级 | 有关每个层级的详细说明,请参阅 [docs/QUADZILLA_RE_COMPLETE.md](docs/QUADZILLA_RE_COMPLETE.md#custom)。 ## 硬件 | 组件 | 详情 | |-----------|--------| | **设备** | Quadzilla Adrenaline DADR9802 | | **MCU** | ARM7TDMI(混合 ARM/Thumb ISA) | | **Flash** | 48KB(22KB 代码 + 7KB 标定 + 19KB 空闲) | | **USB** | CDC ACM —— VID `0x1A18`,PID `0x0002`,921600 波特率 | | **BLE** | 通过 iQuad 应用程序的 X2com 协议 | | **总线** | CAN(ECU ↔ VP44 喷油泵) | | **传感器** | 增压、EGT、TPS、机油压力、电池、速度 | ## 关于本项目 ### 为什么使用 AI? 整个项目由以 "Antigravity" 代理身份运行的 Claude (Anthropic) 完成。AI 做了以下工作: - 编写了所有的 Python 工具 - 创建了自定义 Ghidra 脚本(在终极方案奏效前经历了 6 次失败迭代) - 反编译并分析了固件和 BLE 库中的 119 个函数 - 从 14 个车辆配置文件中映射了所有 117 个参数 - 编写了所有文档 - 犯了错,找出原因,并修复了它们 [主文档](docs/QUADZILLA_RE_COMPLETE.md) 是以 AI 的第一人称视角编写的,因为相比于假装是人类完成的工作,这样更加坦诚也更有趣。 ### ⚠️ 安全警告 修改柴油发动机的燃油喷射和正时可能会导致**灾难性故障**: ## 许可证 这是对公开销售的消费级硬件和软件的研究文档。所有分析均通过对合法购买的产品进行净室反编译完成。本仓库不包含任何专有源代码或受版权保护的材料。

由 AI 构建。献给柴油社区。🏴‍☠️

标签:云资产清单, 固件解密, 客户端加密, 嵌入式系统, 汽车电子, 物联网, 蓝牙低功耗, 逆向工具, 逆向工程