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






4.69/5 (20投票s)
2005年8月4日
2分钟阅读

181375

3729
本文介绍了一种从CD/DVD (El Torito) 提取启动映像的简单方法。 它仅使用 CreateFile 和 ReadFile... 没有任何关于 APSI 编程的神秘之处。
引言
如果您需要从 CD/DVD (El Torito) 提取启动映像,您可以使用此程序。 它仅使用 Win32 调用,例如 CreateFile
和 ReadFile
。 没有任何使用 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
:将存储在此启动映像的初始条目中的段(通常为0000
或7C00
)。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。
现在,如果您执行以下操作,您可以读取初始/默认启动映像
- 读取引导记录卷(扇区 0x11)并检查其有效性。
- 从引导记录卷中提取包含引导目录的扇区号(偏移量为 0x47 字节的
DWORD
)。 - 读取引导目录(来自上面提取的扇区号)并检查其有效性。
- 从引导目录中的初始/默认条目中提取启动信息(从引导目录中的偏移量 0x20 字节开始)。
- 从此条目中提取起始扇区(相对偏移量 0x8 字节的
DWORD
)和虚拟扇区计数(相对偏移量 0x6 字节的WORD
),然后读取启动映像。
有关详细信息,您可以阅读 "El Torito" 可启动 CD-ROM 格式规范 或查看源代码。
历史
- 2005-08-04
- 首次公开发布。
- 2006-01-05
- 修复了一个错误,现在它可以正确读取 1.2/1.44 和 2.88 MB 的启动映像。