65.9K
CodeProject 正在变化。 阅读更多。
Home

从CD/DVD (El Torito) 提取启动映像

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (20投票s)

2005年8月4日

2分钟阅读

viewsIcon

181375

downloadIcon

3729

本文介绍了一种从CD/DVD (El Torito) 提取启动映像的简单方法。 它仅使用 CreateFile 和 ReadFile... 没有任何关于 APSI 编程的神秘之处。

引言

如果您需要从 CD/DVD (El Torito) 提取启动映像,您可以使用此程序。 它仅使用 Win32 调用,例如 CreateFileReadFile。 没有任何使用 ASPI 接口或其他原生内容。

背景

要访问原始 CD/DVD 映像,您只需使用 CreateFile API 并将驱动器盘符指定为文件名。 这将打开驱动器并允许访问扇区。 现在,您可以读取原始映像,如果读取 "El Torito" 可启动 CD-ROM 格式规范,也可以提取启动映像。

使用应用程序

该程序的使用很简单。 您只需要将 CD-ROM/DVD 的驱动器盘符传递给程序即可。 或者,您可以将文件名传递给 ISO 映像。 这是一个使用示例,如果您的 CD-ROM/DVD 驱动器是F:,那么

BootExtract f:

这会将启动映像存储在当前目录中,名称为 Drive-f.NoEmulation__Segment-0000__SecCount-4.bin。 文件名始终包含以下元素(可用于使用刻录程序(如 Nero)写入此启动映像)

  • Drive-f:指定 CD/DVD-ROM 的驱动器盘符或 ISO 文件名。
  • NoEmulation:此启动映像使用的模式。 可能的模式有
    • NoEmulation
    • 1.2兆字节磁盘
    • 1.44兆字节磁盘
    • 2.88兆字节磁盘
  • Segment-xxxx:将存储在此启动映像的初始条目中的段(通常为 00007C00)。
  • SecCount-y:此启动映像使用的虚拟扇区(512 字节)的数量。

完整的用法描述在此处

CD/DVD-BootImage-Extractor v1.0 (c) Jochen Kalmbach
http://blog.kalmbachnet.de/

Usage:
  BootExtract [switches] <source>

  source: The source file (*.iso) or CD/DVD-drive to extract images from

  switches: -b   Also extract bootrecord and bootcatalog

Examples:
  BootExtract z:

关注点

启动映像的位置

如果您可以访问 CD/DVD 扇区,您可以简单地按照 "El Torito" 可启动 CD-ROM 格式规范 来读取启动映像。 需要了解以下定义(在规范中已说明)

  • CD 扇区大小:0x800 字节。
  • 虚拟扇区大小:0x200 字节。
  • 引导记录卷的扇区号:0x11。

现在,如果您执行以下操作,您可以读取初始/默认启动映像

  1. 读取引导记录卷(扇区 0x11)并检查其有效性。
  2. 引导记录卷中提取包含引导目录的扇区号(偏移量为 0x47 字节的 DWORD)。
  3. 读取引导目录(来自上面提取的扇区号)并检查其有效性。
  4. 引导目录中的初始/默认条目中提取启动信息(从引导目录中的偏移量 0x20 字节开始)。
  5. 从此条目中提取起始扇区(相对偏移量 0x8 字节的 DWORD)和虚拟扇区计数(相对偏移量 0x6 字节的 WORD),然后读取启动映像。

有关详细信息,您可以阅读 "El Torito" 可启动 CD-ROM 格式规范 或查看源代码。

历史

  • 2005-08-04
    • 首次公开发布。
  • 2006-01-05
    • 修复了一个错误,现在它可以正确读取 1.2/1.44 和 2.88 MB 的启动映像。
© . All rights reserved.