• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

Rootkits和Bootkits:第14章

Rootkits和Bootkits 云涯 4个月前 (08-28) 379次浏览

14.0 参考

https://www.youtube.com/watch?v=DwO7dn5iNJ0

 

14.1 概述

UEFI( Unified Extensible Firmware Interface):现代接口标准,定义了操作系统和固件之间的软件接口。

UEFI可以看作是一个小型的操作系统,有自己的网络栈。

 

14.2 BIOS和UEFI之间的差异

14.2.1 引导过程流差异

传统的BIOS:引导代码 – MBR – VBR – 操作系统引导

UEFI:UEFI有自己的一段引导代码加载操作系统

14.2.2 磁盘分区差异

MBR:最多支持四个分区或扩展分区、使用小整数标识分区

GPT:支持更多的分区、使用GUID标识分区

启动:GPT分区指定EFI分区,加载引导加载程序。引导加载程序路径类似

\EFI\Microsoft\Boot\bootmgfw.efi,用来定位winload.efi

winload.efi用来加载和初始化操作系统内核映像。

 

14.2.3 其他差异

运行模型:

UEFI:除初始小段代码在CPU上电或复位时运行,其余代码在保护模式下运行

BIOS:在16位模式下执行大部分代码,直到它将控制权移交给操作系统和加载程序。

  • 架构
    • 传统BIOS:没有统一的固件开发过程,每个BIOS供应商独立支持自己的代码库。
    • UEFI:有统一的固件开发规范和Intel参考代码(EDK/EDKII)。
  • 内存模型
    • 传统BIOS:16位实模式。
    • UEFI:32位或64位保护模式。
  • 引导代码
    • 传统BIOS:使用MBR和VBR。
    • UEFI:固件控制启动过程,没有MBR和VBR。
  • 分区方案
    • 传统BIOS:使用MBR分区表。
    • UEFI:使用GUID分区表(GPT)。
  • 磁盘I/O
    • 传统BIOS:系统中断。
    • UEFI:UEFI服务。
  • 引导加载程序
    • 传统BIOS:使用bootmgrwinload.exe
    • UEFI:使用bootmgfw.efiwinload.efi
  • 操作系统交互
    • 传统BIOS:BIOS中断。
    • UEFI:UEFI服务。
  • 启动配置信息
    • 传统BIOS:使用CMOS内存,没有NVRAM变量的概念。
    • UEFI:使用UEFI NVRAM变量存储。

14.3 GUID分区表细节

启动:

UEFI:启动代码在固件中,位于闪存磁盘上

BIOS:启动代码位于磁盘上

GPT分区表结构:

第一个扇区是MBR,只包含MBR一个条码,称为保护性MBR,防止旧的磁盘工具破坏GUID分区

第二个分区偏移0x200包含EFI part签名。是GPT头部的签名。

GPT头如下:

开头是8字节的EFI part签名

注意

Backup LBA(备份LBA):GPT头部副本,主GPT损坏时恢复副本

Starting LBA of array of partition entries(启动分区条目数组的LBA):硬盘驱动器上分区表的位置

Number of partition entries in array(数组中分区条目数):硬盘驱动器上分区表的大小

GUID分区表如下

14.4 UEFI固件工作原理

存储位置:UEFI固件存储在主板的闪存芯片中。

启动:

UEFI框架如下:

 

芯片组逻辑将闪存芯片的内容映射到RAM区域  –  UEFI固件初始化平台(CPU和芯片组)  –  UEFI固件加载UEFI驱动  –  枚举外部设备  –  加载操作系统启动管理器  –  bootmgfw.efi(管理器)  –  winload.efi(加载器)  –  加载操作系统  –  EFI启动服务和运行时服务

14.4.1 UEFI规范

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Rootkits和Bootkits:第14章
喜欢 (0)