OmniDrive安全机制揭秘:逆向MT1959的AES-CMAC签名验证与固件完整性绕过
【免费下载链接】OmniDrive项目地址https://gitcode.com/gh_mirrors/omn/OmniDrive点击查看免费下载OmniDrive 是一款针对 MediaTek MT1959 光驱芯片的固件修改modding项目让 Hitachi-LG 系光驱LG BU40N、ASUS BW-16D1HT能够读取各类专有游戏光盘。它最硬核的部分是逆向破解了 MT1959 固件的AES-CMAC 完整性签名验证通过重算被修改区域的 CMAC 摘要让芯片心甘情愿地烧录修改后的固件。本文带你完整看懂这套安全机制及其绕过手法。一、先搞懂背景光驱固件为什么防修改普通光驱固件里藏着大量厂商私有逻辑原厂用它来限制读取行为——这正是 OmniDrive 要打通的对象自定义READ DISC RAW命令、Raw 扇区读取、Xbox/Wii 等专有光盘支持见 README.md 的功能表。而 MT1959 芯片为防止用户烧录非法固件在启动阶段会执行一套安全流程安全机制作用AES-CMAC 完整性校验固件按区段计算 CMAC 摘要启动时比对不符则拒绝防降级保护Downgrade Protection阻止从新版固件回刷旧版防止绕过已修复的锁命令表锁定厂商自定义指令无法被普通用户扩展想修改固件就必须先让完整性校验通过。OmniDrive 的思路不是粗暴禁用校验而是直接给新固件重签一份合法签名。二、逆向成果MT1959 的 AES-CMAC 签名是怎么算的整个逆向过程的核心成果浓缩在 scripts/update_cmac.py 这个脚本里。1. 签名表的位置与结构固件文件偏移0x10400处有一张签名表共 16 条记录每条 28 字节结构为enabled, start, end, original_cmacMT1959_CMAC_KEY bytes.fromhex(BD209408E35E526A36235234434FE8AB) cmac_range_fmt 3L16s即一个 16 字节的AES-CMAC 密钥update_cmac.py#L7 每个区段的起止偏移 预存的 CMAC 摘要。2. 两个反直觉的细节逆向时最费功夫的是两处字节序处理见 update_cmac.py#L15-L31参与计算的固件数据会先按 16 字节块整体逆序再送入 CMAC计算出的摘要也要逆序后写回签名表。for i in range(0, len(cmac_range), 16): cmac_block cmac_range[i:i16] cmac_range[i:i16] cmac_block[::-1] # 16字节块内逆序 cmac CMAC.new(MT1959_CMAC_KEY, cmac_range, ciphermodAES)3. 绕过手法重算 写回补丁打完之后脚本遍历签名表对每个启用的区段重新计算 CMAC写回原位置update_cmac.py#L34-L45。芯片启动时比对的摘要与固件内容完全一致完整性校验自然通过——这就是绕过的本质不是欺骗校验而是让校验对象重新获得合法签名。三、第二道锁防降级保护是怎么被绕开的绕过签名只是第一步MT1959 还有防降级机制阻止刷入低版本固件。asm/main.asm 中可以看到对应的补丁手法main.asm#L39-L43在0x105C8处写入一段 magic 值用于从更高版本固件降级时放行在0x1EC056处将标志置为0xDEDowngrade Enable。两处小补丁就解开了第二道锁。四、动手实践构建你的 OmniDrive 修改固件依赖清单CMake、ninja、arm-none-eabi-gcc 工具链、armips 汇编器、Python 3 pycryptodome。工具链配置见 arm-toolchain.cmake。git clone https://gitcode.com/gh_mirrors/omn/OmniDrive cd OmniDrive将原版固件HL-DT-ST_BD-RE_BU40N_1.00.bin与ASUS_BW-16D1HT_3.02.bin校验值见 README.md放入firmware/目录新建build目录执行cmake -G Ninja ..执行ninja产物输出到patched_firmware/文件夹。构建流程在 CMakeLists.txt#L20-L27 中定义得很清晰先用 armips 打补丁再自动调用update_cmac.py重算签名两步缺一不可。补丁本身由汇编脚本完成各机型地址表分别位于 asm/HL-DT-ST_BD-RE_BU40N_1.00.asm 与 asm/ASUS_BW-16D1HT_3.02.asm通用补丁逻辑集中在 asm/main.asm在固件空闲空间挂接自定义命令表注册READ DISC RAW0xC0指令main.asm#L5-L15将设备 Inquiry 标识改写为OmniDrive方便识别是否刷写成功多处函数 Hook如ChangeDiscRWModeHook控制解扰开关由 src/main.c 中的 C 代码实现编译后以静态库注入固件空闲区。烧录推荐sdftoolMakeMKV 自带BU40N 固件适用于 slim 系列BW-16D1HT 固件适用于桌面系列。五、写在最后从 OmniDrive 学到的安全课启示说明签名验证≠不可破解密钥若存于芯片固件本身逆向后即可合法重签完整性校验要配合安全启动只验签不防重签保护强度有限防降级需要原子化版本号与签名分离时单点打补丁即可绕过OmniDrive 用不到千行代码完成了从逆向签名算法、到绕过防降级、再到注入自定义 SCSI 指令的完整固件修改闭环是研究嵌入式安全机制的一个优秀样本。⚠️ 提示刷写固件可能导致设备变砖请确认设备型号与固件匹配后再操作并自行承担风险。赞分享【免费下载链接】OmniDrive项目地址https://gitcode.com/gh_mirrors/omn/OmniDrive点击查看免费下载相关推荐SecureUxTheme 深度技术揭秘内存中 UxTheme 签名验证绕过机制SecureUxTheme 深度技术揭秘内存中 UxTheme 签名验证绕过机制 想要为Windows系统自由更换个性化主题吗SecureUxTheme 是桌面应用HoundElixir浏览器自动化与集成测试的终极解决方案HoundElixir浏览器自动化与集成测试的终极解决方案 Hound是一款专为Elixir开发者打造的浏览器自动化与集成测试库它提供了简洁而强大的API探秘TDL安全绕过Windows x64驱动签名验证的利器探秘TDL安全绕过Windows x64驱动签名验证的利器 1、项目介绍 TDLTurla Driver Loader是一个专为x64架构的Windows网络安全应用安全驱动开发系统编程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SpringBoot+Vue驾校预约系统开发实战:从数据库设计到并发防超卖

SpringBoot+Vue驾校预约系统开发实战:从数据库设计到并发防超卖

1. 驾校预约到底卡在哪:手工排班的混乱让我决定做这套系统说实话,最初决定做一套基于SpringBootVue的驾校预约学习系统,不是因为我多喜欢写业务代码,而是被某驾校前台那本厚厚的纸质预约本彻底逼疯了。每次学员打电话约车&#xf…

2026/10/15 18:13:25 阅读更多 →
ZeroTermux 内置命令手册精讲:zcat 命令——不真正解压也能查看 gzip 压缩包内容

ZeroTermux 内置命令手册精讲:zcat 命令——不真正解压也能查看 gzip 压缩包内容

移动开发开发工具 【免费下载链接】ZeroTermux 项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTermux 点击查看 免费下载 本篇围绕 ZeroTermux 内置 Linux 命令手册(app/src/main/assets/cmd/zcat.md)展开,系统讲解 zca…

2026/10/15 18:12:24 阅读更多 →
基于CAN总线的温度采集与控制系统设计:抗干扰与主动报警实践

基于CAN总线的温度采集与控制系统设计:抗干扰与主动报警实践

简介:基于CAN总线的温度采集与控制系统完整工程包,面向嵌入式、STM32及CAN总线通信学习者,解决环境温度实时采集与上位机监控的实践需求。该工程以STM32为控制核心,结合DS18B20温度传感器与CAN收发节点,并配套上位机串…

2026/10/15 18:12:24 阅读更多 →

最新新闻

SAP系统拆分:注意事项与规避做法(下篇)

SAP系统拆分:注意事项与规避做法(下篇)

上篇梳理了拆分项目的风险:模块集成带来的牵连、数据关联被切断、自开发处理工作量被低估、停机窗口受交易时间表约束、合规敞口放大、跨部门协同吃紧、测试被压缩,以及源系统遗留数据的处理。 本篇说明相应的规避做法,按启动前、执行中、上线…

2026/10/15 19:05:56 阅读更多 →
豆包工作上线新功能,支持跨AI产品一键导入已有配置

豆包工作上线新功能,支持跨AI产品一键导入已有配置

近期,豆包工作持续更新,上线“数据导入与同步”功能,支持从其他AI产品一键导入数据,并推出“在新对话中继续”、消息注释和对话摘要侧栏等能力,进一步优化工作任务中的对话体验。据介绍,豆包工作的“数据导…

2026/10/15 19:05:56 阅读更多 →
氧化锆陶瓷电极原理是什么?氧化锆陶瓷电极精密加工厂家

氧化锆陶瓷电极原理是什么?氧化锆陶瓷电极精密加工厂家

氧化锆陶瓷电极之所以能在氧传感器、固体氧化物燃料电池和高温电化学装置中发挥关键作用,根本原因在于其独特的氧离子导电机制。很多用户搜索“氧化锆陶瓷电极原理是什么”,同时也希望找到氧化锆陶瓷电极精密加工厂家。一、氧化锆陶瓷的晶体结构与氧空位…

2026/10/15 19:05:56 阅读更多 →
Java UDP网络编程实战:从原理到C/S通信案例

Java UDP网络编程实战:从原理到C/S通信案例

1. 为什么我选择用UDP做这个C/S通信案例1.1 从一次局域网调试说起前阵子帮一个做物联网设备的朋友排查问题,他的设备端每隔一秒往服务器发一次状态心跳,用的是TCP长连接。设备数量一上来,服务器端就出现大量连接堆积,资源占用高得…

2026/10/15 19:05:56 阅读更多 →
C# USB摄像头稳定录制方案:AForge+FFmpeg工业级实践

C# USB摄像头稳定录制方案:AForge+FFmpeg工业级实践

简介:本资源是一份面向C#初学者与桌面应用开发者的USB摄像头调用实战项目,聚焦于Windows平台下视频录制与单帧图像保存的核心功能实现。资源提供DirectShow与Media Foundation双框架的代码实践路径,涵盖设备枚举、滤镜图构建、媒体流捕获、文…

2026/10/15 19:05:56 阅读更多 →
【ESP32笔记】ESP中的分区表

【ESP32笔记】ESP中的分区表

本节目标:看懂分区表 CSV 的每一列,会给工程添加自定义分区,并用 esp_partition API 完成擦除、写入、读取一、本节要解决的问题 ESP32 的程序不是"整个 bin 一股脑烧到某个固定地址",而是把整块 flash 划分成多个分区&…

2026/10/15 19:04:55 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →