XuZhenG 发表于 2010-6-20 21:40

Windows 7 PE光盘引导程序逆向之一——引导光盘结构解析

本帖最后由 XuZhenG 于 2010-6-21 13:42 编辑

一、 对于 Windows PE的简单介绍
Windows PE的全称是Windows Preinstallation Environment,即Microsoft Windows 预安装环境,是一个基于保护模式下运行的工具,只拥有较少(但是非常核心)服务的Win32子系统。这些服务为Windows安装、实现网络共享、自动底层处理进程和实现硬件验证。

Windows PE经历了如下主要的发展历程
版本 内核
1.xWindows XP 或者 Windows Server 2003
2.0Windows Vista
3.0Windows 7


二、研究Windows 7 PE光盘引导的软件准备
前段时间,我用Windows AIK (Windows Automated Installation Kit) 制作了一个Windows PE 3.0的ISO镜像(用于制作U盘引导),
现在我又恰好在学习bochs虚拟机调试用于研究系统的启动过程

不妨我们就来用bochs来研究一下WIndows 7 PE(官方的说法是 Windows PE 3.0,我的习惯是WIndows 7 PE,下面均使用WIndows 7 PE的说法)光盘的引导过程
你需要准备的工具是:
1、bochs
2、Windows 7 PE的光盘ISO镜像
3、IDA(当然必不可少强大的静态分析工具)
4、WinHEX 或者其他的 16 进制工具



三、Windows 7 PE 引导记录结构解析

El Torito 标准中给出了不可引导光盘,单引导光盘和多引导光盘的结构(figure 1)

figure 1
一般的ISO 一个扇区均为0x800字节 即 2KB
我制作的Windows 7 PE 的ISO里面只有一个可引导的项目,属于单引导光盘


由图可知
第16扇区存放Primary Volume(0x8000-0x87ff)
第17扇区存放Boot Record Volume(0x8800-0x8fff)
其中Primary Volume 与我们的引导没有太大的关系


我们主要分析第17扇区的Boot Record Volume
其中 Boot Record Volume 最前面为Boot Record Volume Descriptor结构(figure 2)

figure 2
我们Windows 7 PE ISO的该结构为(figure 3)

figure 3
较为有用的字段已经在图中圈出,0x00000013 为指向Boot Catalog存放扇区的Absolute Pointor



我们去第0x13号扇区去查看Boot Catalog结构(0x13 * 0x800 = 0x9800)
BootCatalog是由很多有0x20字节大小的结构组成
(包括
Validation Entry
Initial/Default Entry
Section Header
Section Entry
Section Entry Extension )
BootCatalog 最前面的0x20字节是 Validation Entry结构
结构如下

figure 4
Windows 7 PE光盘中对应的数据如下

figure 5
紧接这下面的结构是 Initial Entry 结构

figure 6
对应的数据

figure 7


这里需要解释一下 上面说的 Virtual Sector 的大小是0x200 Bytes
而不是物理的 0x800 Bytes
所以 Sector Count = 0x8 实际上 = 0x200 * 0x8 = 0x1000 Bytes
而下面的LoadRBA = 0x1ELoad Address = 0x1E * 0x800 = 0xF000



上面的计算我们得到真正的引导区代码在0xF000 大小为0x1000 Bytes



我们将在下一节正式开始逆向这些引导区代码


四、结语
通过查询资料,我们找到了光盘的引导区代码存储的位置
   学习的过程中英语阅读能力和搜索能力非常重要……


参考标准
The ISO-9660 File System
http://users.telenet.be/it3.consultants.bvba/handouts/ISO9960.html
“El Torito” Bootable CD-ROM Format Specification
http://bochs.sourceforge.net/techspec/el-torito.pdf.gz

ximo 发表于 2010-6-20 21:43

不错,等wowocock来评论。

cjhuen 发表于 2010-6-20 21:43

只能说这东西太高深了,不知说啥好

a6670110 发表于 2010-6-20 22:27

来者看看长见识了

qq20048888 发表于 2010-6-20 22:44

这玩意太深奥了吧。看不懂是什么。

bob123 发表于 2010-6-20 23:19

这东西,也只能膜拜了。好强悍

ttaa33 发表于 2010-6-20 23:32

路过的,看了此天书,感觉对不起楼主的辛苦

hixiaosheng 发表于 2010-6-21 02:43

把硬盘数据学好了,自己就可以开个数据恢复公司了!

XuZhenG 发表于 2010-6-21 12:06

本帖最后由 XuZhenG 于 2010-6-21 12:07 编辑

回复 2# ximo


    还是不用大牛来鉴定了吧……
    我会被强烈BS然后信心爆减……

   话说这个还是为了补作业凑出来的……

nofriend 发表于 2010-6-21 17:52

對,這東西不是一般人能夠看的明白
页: [1] 2
查看完整版本: Windows 7 PE光盘引导程序逆向之一——引导光盘结构解析