CN108369520B - 保护基本输入/输出(bios)代码 - Google Patents

保护基本输入/输出(bios)代码 Download PDF

Info

Publication number
CN108369520B
CN108369520B CN201680068096.2A CN201680068096A CN108369520B CN 108369520 B CN108369520 B CN 108369520B CN 201680068096 A CN201680068096 A CN 201680068096A CN 108369520 B CN108369520 B CN 108369520B
Authority
CN
China
Prior art keywords
handler
relocation
variables
code
dynamic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201680068096.2A
Other languages
English (en)
Other versions
CN108369520A (zh
Inventor
W·Z·刘
J·K·让索内
D·M·巴罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN108369520A publication Critical patent/CN108369520A/zh
Application granted granted Critical
Publication of CN108369520B publication Critical patent/CN108369520B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

一种保护基本输入/输出系统(BIOS)代码的方法。所述方法包括,利用由处理器执行的重定位信息工具,重构BIOS代码的多个处置机内的多个数据区段以标记处置机内的多个变量。标记指示变量中的哪个应当在运行时被保护。所述方法此外包括生成包括多个重定位地址的重定位文件,所述重定位地址标识在运行时改变的多个动态变量的位置。重定位地址指向处置机内的与原始位置不同的位置。所述方法此外包括利用加载器在运行时加载重定位文件作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。

Description

保护基本输入/输出(BIOS)代码
背景技术
计算设备包括基本输入/输出系统(BIOS),所述基本输入/输出系统可以被存储在例如与中央处理单元(CPU)相关联的闪速存储器上。这具有以下优点:即在BIOS制造商发布BIOS代码的新版本时,BIOS可以被改变或更新。对闪速BIOS的访问可以经由输入/输出(I/O)控制器中枢的通用输入/输出(GPIO)线来做出。在一个示例中,GPIO线中的一个可以被连接到闪速BIOS的写入启用/禁用引脚,并且可以用于允许对闪速BIOS的写入过程。
附图说明
附图图示了本文中描述的原理的各种示例并且是说明书的一部分。所图示的示例仅仅被给出用于图示,并且不限制权利要求的范围。
图1是根据本文中描述的原理的一个示例的用于重定位运行时基本输入/输出系统(BIOS)代码的多个系统管理中断(SMI)处置机的数据区段的系统的框图。
图2和3是根据本文中描述的原理的一个示例的保护基本输入/输出系统(BIOS)代码的方法的数据流程图。
图4是根据本文中描述的原理的一个示例的生成重定位文件的方法的数据流程图。
图5是根据本文中描述的原理的另一示例的生成重定位文件的方法的数据流程图。
图6是根据本文中描述的原理的一个示例的系统管理模式(SMM)存储器映射(memory map)。
图7是根据本文中描述的原理的一个示例的描绘保护BIOS代码的方法的流程图。
贯穿附图,相同的参考标号指明类似的但不一定完全相同的元素。
具体实施方式
虽然用于更新目的的对BIOS的访问是合期望的以允许计算机设备使用制造商提供的最新近的BIOS代码,但是该级别的访问可允许由被设计成使闪速存储器上存储的BIOS代码劣化的计算机病毒对BIOS的访问。任何这样的劣化都是不合期望的,因为它可能致使计算机系统不可用。因而,BIOS代码可能是通过计算系统中的恶意软件或来自外部服务的攻击的对象。作为攻击的结果,BIOS代码可能变得受损。
与BIOS相关联的是系统管理模式(SMM);被提供用于处置全系统功能的操作模式,所述全系统功能比如功率管理、系统硬件控制或专有原始设备制造商(OEM)设计的计算系统代码。SMM意图供系统固件使用,而不是供应用软件或通用系统软件、诸如操作系统使用。SMM提供不同且容易隔离的处理器环境,所述环境对于操作系统或执行体和软件应用透明地操作。为了实现透明性,SMM强加多个规则。通过系统管理中断(SMI)而进入SMM。处理器在分离的地址空间中执行SMM代码,通过固件使得所述分离的地址空间对于CPU的其它操作模式不可访问。因而,SMM是CPU的操作模式,其中所有正常的执行、包括操作系统都被暂停,并且可以是固件的部分或硬件辅助的调试器的特殊分离软件以高特权被执行。
如在本说明书中和所附权利要求中使用的,术语“多个”或类似的语言意图被宽泛地理解为任何正数、包括1到无穷;零不是一个数,而是不存在数。
在以下描述中,为了解释的目的,阐明了众多特定细节以便提供对本系统和方法的透彻理解。然而,将对本领域技术人员显而易见的是,可以在没有这些特定细节的情况下实践本装置、系统和方法。在说明书中对“示例”或类似语言的参考意指结合该示例所描述的特定特征、结构或特性如所描述的那样被包括,但是可不被包括在其它示例中。
现在转到各图,图1是根据本文中描述的原理的一个示例的用于对运行时基本输入/输出系统(BIOS)代码的多个系统管理中断(SMI)处置机的数据区段进行重定位的系统的框图。可以在电子设备中实现系统(100)。电子设备的示例除了其它电子设备之外尤其包括服务器、台式计算机、膝上型计算机、个人数字助理(PDA)、移动设备、智能电话、游戏系统、以及平板设备。
为了实现其期望的功能性,系统(100)包括各种硬件组件。在这些硬件组件之中可以是多个处理器(101)、以及多个数据存储设备(102)。在一个示例中,数据存储设备包括系统管理模式(SMM)数据存储设备以存储数据以及与SMM相关联的可执行代码。这些硬件组件可以通过使用多个总线和/或网络连接而被互连。
处理器(101)可以包括用以从SMM数据存储设备(102)检索可执行代码并且执行所述可执行代码的硬件架构。所述可执行代码可以在被处理器(101)执行的时候使得处理器(101)实现至少保护基本输入/输出(BIOS)代码的功能性,这通过执行重定位信息工具来重定位可在BIOS的运行时改变的多个系统管理中断(SMI)处置机的动态数据、重定位SMI处置机的静态代码和静态数据、或其组合。根据本文中描述的本说明书的方法,这被进行以使所述动态数据与SMI处置机的静态元素(即静态代码和静态数据)隔离以便保护所述静态元素免受运行时的变更。在执行代码的过程中,处理器(101)可以从多个其余的硬件单元接收输入并且向所述多个其余的硬件单元提供输出。
数据存储设备(102)可以存储数据,诸如由处理器(101)或其它处理设备执行的可执行程序代码。如将被讨论的,数据存储设备(102)可以特别地存储计算机代码,所述计算机代码表示多个模块、处置机以及处理器(101)执行来实现至少本文中描述的功能性的应用。
数据存储设备(102)可以包括各种类型的存储器模块,包括非易失性存储器。例如,本示例的数据存储设备(102)包括例如随机存取存储器(RAM)。还可以利用许多其它类型的存储器,并且本说明书设想在数据存储设备(102)中使用许多不同类型的存储器,如可适合本文中描述的原理的特定应用。在某些示例中,数据存储设备(102)中的不同类型的存储器可以用于不同的数据存储需要。例如,在某些示例中,处理器(101)可以从只读存储器(ROM)引导、维持硬盘驱动器(HDD)存储器中的非易失性存储,并且执行随机存取存储器(RAM)中所存储的程序代码。
通常,数据存储设备(102)除了别的之外尤其可以包括计算机可读介质、计算机可读存储介质、或非暂时性计算机可读介质。例如,数据存储设备(102)可以是但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体的系统、装置或设备,或者前述各项的任何合适的组合。计算机可读存储介质的更具体的示例可以包括例如以下:具有多个导线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、便携式光盘只读存储器(CD-ROM)、光学存储设备、磁性存储设备、或前述各项的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是如下的任何有形介质:所述有形介质可以包含或存储计算机可用的程序代码以供指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备相结合地使用。在另一示例中,计算机可读存储介质可以是如下的任何非暂时性介质:所述非暂时性介质可以包含或存储程序以供指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备相结合地使用。
系统(100)此外包括在通过重定位多个系统管理中断(SMI)处置机的静态代码和数据而保护基本输入/输出(BIOS)代码的实现中使用的多个模块。系统(100)内的各种模块包括可以被分离地执行的可执行程序代码。在该示例中,各种模块可以被存储为分离的计算机程序产品。在另一示例中,系统(100)内的各种模块可以被组合在多个计算机程序产品内;每个计算机程序产品包括多个模块。
系统(100)可以包括例如重定位信息工具(110)用以当被处理器(101)执行的时候标识BIOS代码的多个处置机内的动态数据。重定位信息工具(110)还标识将针对BIOS的运行时和在BIOS的运行时期间保持不被变更并且受保护的静态数据和静态代码。重定位信息工具(106)重构(refactor)BIOS代码的多个处置机(103)内的多个数据区段(105)以标记SMI处置机(103)内的多个动态变量以用于SMI处置机(103)的存储空间内的重定位。此外,重定位信息工具(106)重构处置机(103)内的数据区段(105)以将多个变量标记为不应当改变并且出于该原因应当被保护的静态变量,标记SMI处置机(103)内的多个变量作为可以在BIOS的运行时改变的动态变量,或其组合。所述标记指示在运行时应当保护变量中的哪个以确保不做出对受保护的变量的改变。所有静态变量连同静态处置机代码(104)应当在运行时被保护。重定位信息工具(106)生成包括多个重定位地址的重定位文件,所述重定位地址标识可以在运行时改变的多个动态变量的位置。重定位地址指向处置机(103)内的与处置机的数据区段内的受保护变量的原始位置不同的位置。此外,加载器在运行时加载重定位文件作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。现在将更详细地描述关于处置机上所存储的代码和数据的更多细节。
如在本说明书中和在所附权利要求中所使用的,术语“处置机”意图被宽泛地理解为控制程序对特定外部事件的反应的任何软件例程。在本文中描述的一个示例中,处置机控制系统(100)对系统管理中断(SMI)的反应,并且因此可以被称为中断处置机。因而,处置机可以被描述为微控制器固件、操作系统或设备驱动器中的回调功能,其执行由中断的接收所触发。
系统(100)利用SMI,所述SMI使得处理器(101)进入受保护的操作环境,在所述受保护的操作环境中所有软件的执行被停止,除了对于受保护的环境内所包含的代码之外。受保护的环境内的代码包括例如BIOS代码。BIOS是这样一种类型的固件:所述固件用于在引导过程(上电启动)期间执行硬件初始化,并且提供运行时服务用于操作系统和程序。BIOS固件被构建到计算设备内,并且是所述计算设备在上电时运行的第一个软件。计算设备中的BIOS的一个目的是要初始化和测试系统硬件组件,并且从诸如SMM数据存储设备(102)之类的大容量存储器设备中加载引导加载器或操作系统。BIOS附加地为硬件提供抽象层,以提供用于使应用程序和操作系统与键盘、显示器和其它输入/输出(I/O)设备交互的一致性方式。在一个示例中,BIOS代码可以被存储在系统(100)的母板上的ROM芯片中。在贯穿各图描绘的另一示例中,BIOS以及相关联的代码和数据被存储在闪速存储器上,因此它可以被重写而不从母板移除芯片。这允许对BIOS固件的容易的更新,从而添加新特征并且修正BIOS情况下的问题。
可以在系统(100)的上电期间、中断事件期间或其组合期间执行SMI处置机(103),所述中断事件诸如例如系统(100)内的硬件组件的过热。在这些实例中,系统(100)可以进入系统管理模式(SMM)。如以上所提及的,SMM是被提供用于处置全系统功能的操作模式,所述全系统功能比如功率管理、系统硬件控制或专有原始设备制造商(OEM)设计的系统(100)代码。通过SMI进入SMM,其中处理器(101)在分离的地址空间中执行SMM代码,通过固件使得所述分离的地址空间对于CPU的其它操作模式不可访问。因而,SMM是CPU的操作模式,其中所有正常的执行、包括操作系统都被暂停,并且可以是固件的部分或硬件辅助的调试器的特殊分离软件以高特权被执行。
任何数目的SMI处置机(103)可以被存储在SMM数据存储设备(102)中,如由图1中所描绘的SMI处置机1(103-1)直到SMI处置机n(103-n)所指示的。每个SMI处置机(103)可以包括处置机代码(104),所述处置机代码当被执行时解决SMI事件。SMI处置机(103)还包括多个数据区段(105)。SMI处置机(103)内的数据区段(105)的数目可以在SMI处置机(103)之中变化,但是可以包括任何数目的数据区段(105),如在图1中参考数据区段1(105-1)直到数据区段n(105-n)所指示的。然而,作为通过恶意软件的攻击或来自BIOS系统外部的其它攻击的结果,SMM存储数据(102)内的SMI处置机(103)可受损。在一个示例中,处置机代码(104)、数据区段(105)或其组合可以被写入到外部源或以其它方式被外部源变更,并且系统(100)可受损。由于BIOS和SMM的高度享有特权的性质,这样的攻击可能潜在地允许外部源获得对系统(100)(即用户的计算设备)的任何部分以及任何其功能和数据的访问。因而,本文中描述的示例向SMI处置机(103)内的处置机代码(104)、数据区段(105)或其组合提供保护以免于在BIOS和SMM的运行时之前及其期间受到变更。
可以在系统(100)进入SMM的时候执行SMI事件的唤起以及对处置机代码(104)和数据区段(105)的保护。图2和3是根据本文中描述的原理的一个示例的保护基本输入/输出系统(BIOS)代码的方法的数据流程图。如图2中所描绘的,发生SMI事件(201)。一旦该SMI事件(201)被唤起,中央处理单元(CPU)(101)内的多个核(202)(即处理器(图1、101))就进入SMM状态(203)。核(202)中的一个被选为引导处理器(BSP)核(202)以便启动计算设备(100)。
在图2中所描绘的示例中,检测处置机(204)被执行,作为BSP核(202)所执行的多个第一处置机中的第一个或其中之一。检测处置机(204)包括处置机代码(104)以及多个数据区段(105)。检测处置机(204)的处置机代码(104)包括源检测逻辑(205)。
源检测逻辑(205)确定SMI事件的源或起因,并且提供可执行代码,所述可执行代码使得BSP核(202)开始搜索多个链表(图3,207)以确定多个SMI(201)中的哪个被执行。遵循数据流指示符“A”,并且如图3中所描绘的,任何数目的链表条目(207)可以被包括在BIOS内,如由链表条目(207-1)直到链表条目(207-n)所指示的。在搜索期间,BSP核(202)搜索在SMI中找到的全局唯一的标识符(GUID)以及在链表条目(207)的每一个中所标识的GUID(208)之间的匹配。一旦找到了在GUID(208)与SMI事件(201)之间的匹配,GUID指针(209-1)就指向与该GUID(208)相关联的SMI处置机(103),并且执行其中所包含的处置机代码(104)以解决SMI事件(201)。如果结合特定链表条目(207)没有找到在GUID(208)与SMI事件(201)之间的匹配,那么该链表条目(207)使用“链中下一链接”指针(201)以指向随后的链表条目(207),以及在由源检测逻辑(205)所检测的SMI事件(201)中找到的GUID与下一链表条目(207)的GUID(208)之间的比较。以此方式,响应于SMI事件(201)而执行处置机代码(104),从而处置SMI事件(201)。
源检测逻辑(205)还使得BSP核(202)在如上所述搜索链表(207)之前、期间和/或之后执行重定位信息工具(206)。重定位信息工具保护BIOS代码,这通过将多个SMI处置机(103)的动态代码、或静态代码和静态数据、或其组合重定位到数据区段(105)内的其它部分。在一个示例中,要么动态数据,要么静态代码和静态数据被重定位,而不是二者。在该示例中,这两组数据的移动可经证明是低效的,因为执行了另一过程。通过移动仅一组,整体过程被缩短并且消耗较少的计算资源。然而,在另一示例中,动态数据以及静态代码和静态数据二者被移动和隔离使得动态数据被存储在SMI处置机(103)的存储空间内的动态堆中,并且静态代码和静态数据被存储在SMI处置机(103)的存储空间内的静态堆中。
重定位信息工具(206)本身可以被存储在SMM数据存储设备(102)的任何部分中,并且可以被存储为独立文件或被存储为SMI处置机(103)之一以在向SMM的进入的开始时被执行。遵循数据流指示符“B”,并且如图3中所描绘的,重定位信息工具(206)可以访问SMI处置机(103),这是通过访问其相应的链表条目(207)。在另一示例中,重定位信息工具(206)可以直接访问SMI处置机(103)。在任一示例中,重定位信息工具(206)访问SMI处置机(103)以重构处置机(103),其包括应当被保护并且被重定位到SMI处置机(103)内的分离的数据区段(105)的数据区段(105)内的静态数据部分和处置机代码(104)。
如在本说明书中和随附权利要求中所使用的,术语“重构(refactor)”意图被宽泛地理解为跨数据集做出改变而不改变处置机的行为或其与其它元素的关系的任何动作。在一个示例中,处置机(103)的重构包括标记处置机代码(104)内的多个变量和数据区段(105),由于它们不应当在BIOS的运行时或运行时之后改变而应当被保护。
此外,如在本说明书中和所附权利要求中所使用的,术语“动态数据”意图被宽泛地理解为在编程语言中与在程序的执行期间被确立的性质有关并且与在运行时或处理期间发生的事件有关的任何数据。例如,动态数据可以包括在程序的运行时执行期间被使用的变量。如在本说明书中和在所附权利要求中所使用的,术语“静态数据”意图被宽泛地理解为在编程语言中在函数调用之间保留其值的任何数据。例如,静态数据可以包括一旦发生引导时间的初始化则不应当改变的任何数据。BIOS内的静态数据的示例包括函数指针。
SMI处置机(103)内的数据区段(105)各自包含动态数据、静态数据或其组合。此外,处置机代码(104)被当作处置机(103)内的静态元素,一旦发生引导时间的初始化则不应当改变,并且为此原因,应当连同静态数据一起被保护。为了更充分地理解重定位信息工具(206)用来保护处置机(103)的部分的方法,现在将参考图4和5。
图4是根据本文中描述的原理的一个示例的生成重定位文件(413)的方法的数据流程图。在对系统(100)的BIOS代码进行保护中,BSP核(202)执行重定位信息工具(206)以基于映射(.map)文件(407)和汇编语言(ASM)源文件(411)而生成重定位文件(413)。
重定位文件(413)是二进制(.bin)文件,其在运行时利用加载器被加载,作为BIOS固件映像的部分。二进制文件是对存储器内的数据的原始逐扇区的拷贝进行存储的任何文件。在一个示例中,重定位文件(413)包括与每个处置机(103)相关联的多个驱动器名称、与每个驱动器名称相关联的驱动器全局唯一的标识符(GUID)、以及标识重定位地址的多个重定位记录,所述重定位地址定义将被保护的多个变量的位置。重定位地址指向多个处置机内的与原始位置不同的位置。现在将结合图5提供关于重定位文件(413)的生成的更多细节。
图5是根据本文中描述的原理的另一示例的生成重定位文件(413)的方法的数据流程图。图5的方法可以通过利用编译器(402)编译源文件而开始。在一个示例中,用一种类型的C编程语言来编写源文件。编译器(402)生成目标(.obj)文件(403)和库(.lib)文件(404)。目标文件(403)是包含目标代码或任何其它类型的可重定位格式的机器代码的任何文件。重定位是这样的过程:将加载地址指派到程序的各个部分并且调节程序中的代码和数据以反映所指派的地址。库文件(404)包括一组例程、外部函数、和变量,其在编译时间被解析并且由编译器、链接器或结合器(binder)拷贝到目标应用中。
链接器(405)是如下的任何计算机程序:所述计算机程序取编译器(402)所生成的目标文件(403)和库文件(404),并且组合它们以创建动态链接库(DLL)(.dll)文件(406)和映射文件(407)。DLL文件(406)是如下的任何文件:所述文件包括在加载时间或运行时间、而不是在链接期间被结合到程序的可执行代码和数据。
映射(MAP)文件是如下的任何文件:所述文件告知重定位工具在二进制源文件、诸如DLL文件(406)和汇编语言(ASM)源文件(411)内的何处,其中标识变量的多个符号位于SMM数据存储设备(102)中。这些变量被标识为可以在运行时改变的动态数据或被标识为不应当在运行时改变的静态数据。SMI处置机(103)内的所述多个动态变量被源代码内的重定位信息工具(206)标记以指示它们是可以在BIOS的运行时改变的动态数据。在一个示例中,重定位信息工具(206)可以此外将静态数据标记为不应当在引导过程的结束时改变并且为该原因应当被保护的数据。
发生器(GenFW)(408)将DLL文件(406)、二进制格式文件的格式改变成统一可扩展固件接口(UEFI)或可扩展固件接口(EFI)格式化的文件(409)。一旦获得了二进制EFI文件(409),系统(100)内的重定位信息工具(206)就使用映射文件(407)和汇编器模块(410)来标识SMI处置机(103)内的标记并且逐区段地解析数据区段(105)来找到那些标记。区段是数据页面,其中页面是4096字节。数据区段(105)中的一些可以包括所有动态数据,其包括甚至在运行时期间和运行时之后不断改变的变量。该动态数据不受保护。然而,一些数据区段(105)包括动态和静态数据的混合物、或者应当被保护免于在运行时和运行时之后被改变的所有静态数据。因而,重定位信息工具(206)能够以页面或数据区段(105)的粒度进行搜索以找到包括动态和静态数据的混合物、或者所有静态数据的那些数据区段(105)。这些区段被标记为受保护以免受改变。该级别的粒度允许相对较少的数据区段(105)被移动。此外,在一个示例中,系统(100)可以将SMM数据存储设备(102)中的受保护的变量置于由页面大小所设置的边界内以便节约存储空间。
所有处置机代码区段(104)被视为是静态的,并且由重定位信息工具(206)标记为连同包括动态和静态数据的混合物或所有静态数据的数据区段(105)一起被保护。重定位信息工具(206)聚集包括动态和静态数据的混合物或所有静态数据的数据区段(105)和代码区段(104),并且在SMM数据存储设备(102)内分配空间以用于它们的存储。
在SMM数据存储设备(102)内分配空间以用于存储处置机代码(104)以及包括动态和静态数据的混合物或所有静态数据的数据区段(105)中,重定位信息工具(206)在SMM数据存储设备(102)内创建堆或区域,其中动态数据区段与处置机代码(104)以及包括动态和静态数据的混合物或所有静态数据的数据区段(105)隔离。图6是根据本文中描述的原理的一个示例的系统管理模式(SMM)存储器映射图(600)。SMM存储器映射图(600)由系统(100)的重定位信息工具(206)用来在SMM数据存储设备(102)内创建区域以用于与静态变量(602)隔离的动态变量(601)。在SMM数据存储设备(102)内分配的动态堆(603)包括仅包括动态数据的数据区段(105)。动态数据,由于其通过重定位信息工具(206)照此的标记,被物理地重定位到动态堆。动态堆是数据存储装置中所分配的区域,其与其中先前地存储了动态变量的原始数据存储区域或位置分离。如以上所提及的,动态(即动态数据)和静态元素(即静态代码和静态变量)二者可以被移动到SMI处置机(103)的隔离区域。然而,在该示例中,仅仅动态数据被物理地移动到所分配的存储空间以便缩减或消除计算机资源的处理和使用。
相反,静态堆(604)包括受保护的范围表(610)以及混合变量的备份拷贝(611)。受保护的范围表(610)由重定位信息工具或被存储在SMM数据存储设备(102)中的周期性扫描模块所构建,用以列出SMM数据存储设备(102)内的包含受保护的静态代码和数据的范围。该表可以采取与以下运行时保护表类似的形式:
<u>动作</u> <u>动态</u> <u>静态</u> <u>混合</u>
全局 无动作 标记 标注在下方*
局部 无动作 标记 标注在下方*
从堆中分配 无动作 新的分配函数 标注在下方*
表1:运行时保护表
*注意到,新函数可以被调用以将具有源地址、目的地地址和大小的条目添加到运行时保护表中。
在一个示例中,处理器(101)指示每个处置机标识处置机(103)内的包含静态和动态成员二者的数据区段(105)的多个关键部分。处理器(101)可以在运行时保护表中创建受保护的范围的列表以及处置机(103)的静态拷贝以用于周期性扫描模块。
全局以及局部地而言,为动态数据没有采取任何动作。此外,关于SMM数据存储设备(102)的动态堆内的空间的分配,没有为动态数据采取任何动作。相反,全局以及局部地,静态代码和数据被标记,并且结合静态代码和静态数据而发生上述对受保护范围的标识。在一个示例中,新函数可以被重定位信息工具(206)调用以用于包括动态和静态数据的混合物或者所有静态数据的数据区段(105),从而添加条目,具有静态和混合数据区段(105)的源地址、目的地地址和大小。该信息被录入到受保护的范围表(610)中。
如以上所提及的,混合变量的备份拷贝(611)也被维护在SMM数据存储设备(102)的静态变量(602)部分的静态堆(604)中。这允许系统(100)的重定位信息工具(206)提供一个或多个处置机代码区段(104)或静态数据区段(105)的拷贝以便验证:活动拷贝不包括关于备份拷贝(611)的关键数据中的改变。
在一个示例中,周期性扫描处置机(103)的计算机模块可以用于验证:包含静态和动态元素二者的处置机(103)内的关键数据尚未被变更。范围内的受保护数据的该验证在SMM的进入点之后尽可能早地被执行以便一致地维护该关键数据的正确拷贝。此外,重定位信息工具(206)可以对照静态变量(602)之中的混合变量的备份拷贝(611)来周期性地验证动态变量(601)之中的数据的活动拷贝以便确保:SMM数据存储设备(102)的静态变量(602)区段内的与动态数据混合的静态数据受保护以免受改变。
SMM数据存储设备(102)内的静态变量(602)还包括处置机代码(104)以及包含动态和静态数据的混合物或所有静态数据的那些数据区段(105)。重定位信息工具(206)变更现有加载器以支持对动态数据的区段级重定位以及对SMI处置机(103)内的处置机代码(104)的全局重定位。在一个示例中,加载器是便携式可执行的/公共目标文件格式(PE/COFF)加载器。重定位信息工具(206)还变更加载器以确保:加载器跳过重定位以便避免在数据重定位过程之间的冲突。
再次转到图5,汇编器模块(410)取EFI文件(409)作为输入并且创建汇编语言源(ASM)(.asm)文件(411)。因而,汇编器模块(401)产生.asm文件,并且是将汇编语言指令转换成目标代码的计算机程序。汇编语言允许定义并且使用符号来表示硬件存储器地址、诸如处理器寄存器之类的架构特征、以及恒定值。被称为助记符(mnemonic)的符号可以用于指定每个低级机器指令或操作。在一个示例中,在汇编语言(ASM)源文件(411)内提供一个或多个操作数以便形成完整指令。此外,在一个示例中,汇编器模块(410)允许符号、常量、和表达式作为操作数。
如本文中所描述的,重定位信息工具(206)扫描映射文件(407)以对标识将被处置机代码(104)引用的变量的所有符号进行标识。对于每个符号,重定位信息工具(206)通过使用反汇编器来搜索汇编器模块(410)所生成的ASM文件(411)。反汇编器是将机器语言转化成汇编语言的任何计算机程序;针对汇编器的操作的逆操作。对于具有那些所标识的符号的每行,基于操作代码(操作码),重定位信息工具(206)确定将在加载时间被调节的偏置。仍另外地,重定位信息工具(206)生成重定位二进制(reloc.bin)文件(413)。
重定位信息工具(206)取映射文件(407)和ASM文件(411)作为输入,并且生成重定位二进制(reloc.bin)文件(413)。映射文件(407)告知重定位信息工具(206)在二进制ASM源文件(411)内的何处,其中变量及其符号被定位。在源代码内标记这些变量以指示它们是可以在BIOS的运行时改变的动态变量、是静态数据并且不应当在引导过程结束时改变、或其组合。
在运行时由加载器(414)加载重定位二进制文件(413),作为BIOS固件映像的部分。在BIOS映像的加载期间以及在运行时,重定位模块(501)变更处置机代码(104)以包括用于动态数据的新地址。如以上所描述的,动态数据重定位在处置机(103)内并且与数据区段(105)内的静态数据和静态代码(104)隔离。因而,为了恰当地寻址、定位和执行经重定位的动态数据,处置机代码(104)被修改以包括动态数据的新数据位置。以此方式,对SMM数据存储设备(102)内的存储器空间的分配以及所隔离的代码和数据的位置和地址进行标识的重定位信息在运行时由加载器经由重定位模块(501)提供。此外,由于这一点,多个页面表、一般EFI模块内的库、以及SMM协议数据库也被保护。
以此方式,系统(100)的各种组件除了别的之外尤其提供(1)标记所有动态数据、以及分离地具有区段属性的静态数据以便动态数据在构建过程期间将被存储在相同的数据区段(105)中并且与静态元素隔离;(2)构建静态代码和静态数据的受保护范围的列表并且对照位于SMM数据存储设备(102)的静态区域中的备份拷贝(611)周期性地验证SMM数据存储设备(102)的动态区域中的数据的活动拷贝以便保护结构中的与动态成员混合的那些静态成员;以及(3)修改BIOS构建过程以生成重定位信息。添加区段层级的重定位支持使得所有SMM驱动器将加载到SMM数据存储设备(102)的静态区域(602)。加载器(例如PE/COFF加载器)被修改以在动态区域(601)中分配存储器、将具有动态数据的区段拷贝到新的位置、并且将代码区段(104)中的所有数据访问调节到新位置。以此方式,SMM驱动器映像保持完整以避免对所加载的映像协议的影响,但是动态数据区段对所加载的映像将没有影响。此外,添加存储器分配功能以为SMI处置机(103)中的动态数据分配存储器。在一个示例中,存储器分配可以来自被分配为静态数据区域(602)的存储器的一部分。
在一个示例中,BIOS构建可以利用可以被使用的任何类型的编译器(402),包括由自由软件基金会(Free Software Foundation)开发和分发的GNU C编译器、在伊利诺伊大学/NCSA开源许可下开发和分发的Clang编译器。此外,在一个示例中,链接器(405)可以是在开源许可下开发和分发的任何UNIX链接器。
图7是根据本文中描述的原理的一个示例的描绘保护BIOS代码的方法的流程图。所述方法包括,利用由处理器执行的重定位信息工具,重构(框701)BIOS代码的多个处置机(103)内的多个数据区段(105)以标记处置机(103)内的多个变量。重构是如下的过程:重组现有处置机代码(104)(即改变因素列入(changing the factoring))而不改变处置机代码(104)的外部行为。标记指示变量中的哪个将在运行时被保护。
所述方法此外包括生成(框702)包括多个重定位地址的重定位文件(413),所述重定位地址标识可以在运行时改变的多个动态变量的位置。重定位地址指向处置机(103)内的与原始位置不同的位置。也就是说,由于SMM数据存储设备(102)内的数据区段(105)的重定位,SMM数据存储设备(102)内的地址被改变并且被存储以允许系统(100)找到经重定位的数据区段(105)。
加载器在运行时加载(框703)重定位文件(413)作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。重定位文件(413)包括例如与每个处置机(103)相关联的多个处置机名称、以及与每个处置机名称相关联的驱动器全局唯一的标识符(GUID)(208)。
在一个示例中,所述方法此外包括标识处置机(103)的处置机代码(104)、聚集处置机代码(104)和受保护的变量(即静态的以及混合的动态和静态的数据区段(105)),以及将处置机代码(104)和受保护的变量(105)重定位到系统维护模式(SMM)数据存储设备(102)内的数据堆(602、604)。重定位地址标识处置机代码(104)和受保护的变量(105)的位置。
在一个示例中,所述方法此外包括利用重定位信息工具(206)来验证:通过重定位尚未变更任何关键数据。此外,在一个示例中,所述方法此外包括指示每个处置机(103)以基于运行时保护表中的重定位地址来标识处置机代码(104)和受保护的变量(105)。将动态变量(601)重定位到数据堆(603)包括为包括动态变量(601)的多个处置机(103)分配SMM数据存储设备(102)内的存储器。处置机代码(104)和受保护的变量(105)在BIOS代码的构建过程期间被存储在处置机(103)的相同区段中,与动态堆(603)隔离。
在一个示例中,所述方法此外包括修改加载器以分配SMM数据存储设备(102)内的存储器作为SMM数据存储设备(102)的静态区域(602),在其中存储处置机代码(104)和受保护的变量(103)。在该示例中,所述方法可以此外包括改变处置机代码(104)中的数据访问以包括重定位地址。
本系统和方法的各方面在本文中参考根据本文中描述的原理的示例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图而被描述。流程图图示和框图的每个框,以及流程图图示和框图中框的组合可以由计算机可用的程序代码实现。计算机可用的程序代码可以被提供给通用计算机、专用计算机的处理器或其它可编程数据处理装置以产生机器,使得计算机可用程序代码在经由例如系统(100)的处理器(101)或其它可编程数据处理装置被执行时实现在流程图和/或框图的一个或多个框中所指定的功能或动作。在一个示例中,计算机可用程序代码可以被具体化在计算机可读存储介质内;所述计算机可读存储介质是计算机程序产品的部分。在一个示例中,所述计算机可读存储介质是非暂时性计算机可读介质。
说明书和附图描述保护基本输入/输出系统(BIOS)代码的方法和系统。所述方法包括,利用由处理器执行的重定位信息工具,重构BIOS代码的多个处置机内的多个数据区段以标记处置机内的多个变量。标记指示变量中的哪个应当在运行时被保护。所述方法此外包括生成包括多个重定位地址的重定位文件,所述重定位地址标识在运行时改变的多个动态变量的位置。重定位地址指向处置机内的与原始位置不同的位置。所述方法此外包括利用加载器在运行时加载重定位文件作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。这些方法和系统:除了别的之外尤其(1)确保包括SMM和UEFI运行时服务的运行时BIOS代码的完整性;以及(2)应用于任何计算平台。
在前的描述已经被呈现以说明和描述所述原理的示例。该描述不意在是穷举的或者将这些原理限制于所公开的任何确切形式。鉴于以上教导,许多修改和变型是可能的。

Claims (15)

1.一种保护基本输入/输出系统BIOS代码的方法,包括:
利用由处理器执行的重定位信息工具:
重构BIOS代码的多个中断处置机内的多个数据区段以识别动态变量和静态变量;其中动态变量在BIOS代码的运行时期间改变,而静态变量不改变;动态变量和静态变量二者在BIOS代码的运行时期间被保护;
标记BIOS代码的中断处置机内的动态变量以便在系统管理中断SMI处置机的存储空间内重定位;
标记应该被保护的静态变量;
通过将动态变量重定位到系统管理中断SMI处置机的存储空间内的新位置,将动态变量与静态变量分开;以及
生成包括多个重定位地址的重定位文件,所述重定位地址标识动态变量的新位置;
利用加载器在运行时加载重定位文件作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。
2.根据权利要求1所述的方法,其中所述重定位文件此外包括:
与每个中断处置机相关联的多个处置机名称,以及
与每个处置机名称相关联的驱动器全局唯一的标识符GUID。
3.根据权利要求1所述的方法,此外包括:
标识处置机的处置机代码;
聚集处置机代码和受保护的变量;以及
将动态变量重定位到系统维护模式SMM数据存储设备内的数据堆,所述重定位地址标识处置机代码中的位置以用于对动态变量的访问。
4.根据权利要求3所述的方法,此外包括,利用周期性扫描模块来验证:包含中断处置机内的静态和动态成员二者的关键数据尚未被变更。
5.根据权利要求4所述的方法,此外包括指示每个中断处置机标识中断处置机内的包含静态和动态成员二者的数据区段的多个关键部分,并且在运行时保护表中创建受保护范围的列表以及中断处置机的静态拷贝以用于周期性扫描模块。
6.根据权利要求3所述的方法,其中将动态变量重定位到数据堆包括:
为包括动态变量的多个中断处置机分配SMM数据存储设备内的存储器。
7.根据权利要求3所述的方法,其中所述处置机代码和受保护的变量在BIOS代码的构建过程期间被存储在中断处置机的相同区段中。
8.根据权利要求3所述的方法,此外包括修改加载器以:
分配SMM数据存储设备内的存储器作为SMM数据存储设备的静态区域,在其中存储处置机代码和受保护的变量;
改变处置机代码中的数据访问以包括重定位地址。
9.一种用于对运行时基本输入/输出系统BIOS代码的多个系统管理中断SMI中断处置机的数据区段进行重定位的系统,包括:
至少一个处理器;
用以存储系统管理中断SMI中断处置机的系统管理模式SMM数据存储设备,所述系统管理中断SMI中断处置机包括处置机代码和多个数据区段;以及
被存储在SMM数据存储设备上的重定位信息工具,用以在由处理器执行的时候:
重构BIOS代码的多个中断处置机内的多个数据区段以识别动态变量和静态变量;其中动态变量在BIOS代码的运行时期间改变,而静态变量不改变;动态变量和静态变量二者在BIOS代码的运行时期间被保护;
标记BIOS代码的中断处置机内的动态变量以便在系统管理中断SMI处置机的存储空间内重定位;
标记应该被保护的静态变量;
通过将动态变量重定位到系统管理中断SMI处置机的存储空间内的新位置,将动态变量与静态变量分开;以及
生成包括多个重定位地址的重定位文件,所述重定位地址标识动态变量的新位置;以及
利用加载器在运行时加载重定位文件作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。
10.根据权利要求9所述的系统,此外包括利用加载器来在运行时加载重定位文件,作为BIOS固件映像的部分。
11.根据权利要求9所述的系统,其中所述重定位信息工具生成包括多个重定位地址的重定位文件,所述重定位地址标识多个动态变量的位置,所述重定位地址指向中断处置机内的与原始位置不同的位置并且标识动态变量的位置。
12.一种非暂时性计算机可读介质,用于保护基本输入/输出系统BIOS代码,包括:
利用所述介质具体化的计算机可用的程序代码,所述计算机可用的程序代码当由处理器执行时:
重构BIOS代码的多个中断处置机内的多个数据区段以识别动态变量和静态变量;其中动态变量在BIOS代码的运行时期间改变,而静态变量不改变;动态变量和静态变量二者在BIOS代码的运行时期间被保护;
标记BIOS代码的中断处置机内的动态变量以便在系统管理中断SMI处置机的存储空间内重定位;
标记应该被保护的静态变量;
通过将动态变量重定位到系统管理中断SMI处置机的存储空间内的新位置,将动态变量与静态变量分开;以及
生成包括多个重定位地址的重定位文件,所述重定位地址标识动态变量的新位置;以及
利用加载器在运行时加载重定位文件作为BIOS固件映像的部分,并且调节对处置机代码中的动态变量的数据访问,从而基于重定位文件而标识动态变量的位置。
13.根据权利要求12所述的非暂时性计算机可读介质,此外包括计算机可用的程序代码,用以在由处理器执行时:
扫描映射文件以标识由BIOS代码的中断处置机内的多个数据区段所引用的多个变量;
为所述变量中的每一个解析汇编语言ASM源文件;以及
利用重定位信息工具,基于映射文件和ASM文件来生成重定位文件。
14.根据权利要求12所述的非暂时性计算机可读介质,其中在数据区段层级的基础上、关于每个中断处置机内的多个数据区段而生成重定位文件。
15.根据权利要求12所述的非暂时性计算机可读介质,其中所述重定位信息工具在由处理器执行时重构BIOS代码的中断处置机内的多个数据区段,用以标记中断处置机内的多个变量,所述标记指示变量中的哪个应当在运行时被保护。
CN201680068096.2A 2016-01-25 2016-01-25 保护基本输入/输出(bios)代码 Expired - Fee Related CN108369520B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/014774 WO2017131621A1 (en) 2016-01-25 2016-01-25 Protecting basic input/output (bios) code

Publications (2)

Publication Number Publication Date
CN108369520A CN108369520A (zh) 2018-08-03
CN108369520B true CN108369520B (zh) 2022-03-08

Family

ID=59398328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680068096.2A Expired - Fee Related CN108369520B (zh) 2016-01-25 2016-01-25 保护基本输入/输出(bios)代码

Country Status (5)

Country Link
US (1) US10296353B2 (zh)
EP (1) EP3314514B1 (zh)
CN (1) CN108369520B (zh)
BR (1) BR112018010437A8 (zh)
WO (1) WO2017131621A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528739B2 (en) * 2016-04-20 2020-01-07 Sophos Limited Boot security
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
GB2566296B (en) * 2017-09-07 2019-11-27 Arm Ip Ltd Methods and apparatus for defending against memory-related attacks on devices
CN109714303B (zh) 2017-10-25 2022-05-27 阿里巴巴集团控股有限公司 Bios启动方法及数据处理方法
CN109710315B (zh) 2017-10-25 2022-05-10 阿里巴巴集团控股有限公司 Bios刷写方法及bios镜像文件的处理方法
JP7179482B2 (ja) * 2018-04-19 2022-11-29 キヤノン株式会社 情報処理装置、制御方法、およびそのプログラム
US20230026664A1 (en) * 2020-01-31 2023-01-26 Hewlett-Packard Development Company, L.P. Access filter for bios variables
US12008359B2 (en) * 2020-02-13 2024-06-11 Intel Corporation Update of boot code handlers
TWI758026B (zh) * 2020-12-23 2022-03-11 神雲科技股份有限公司 基本輸入輸出系統功能的設定方法
CN113127844A (zh) * 2021-03-24 2021-07-16 山东英信计算机技术有限公司 一种变量访问方法、装置、系统、设备和介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081890A (en) * 1998-11-30 2000-06-27 Intel Corporation Method of communication between firmware written for different instruction set architectures
CN1589431A (zh) * 2001-11-15 2005-03-02 英特尔公司 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统
CN1636190A (zh) * 2001-05-11 2005-07-06 英特尔公司 对多体系组件软件的系统管理模式加载程序和执行机制
CN101373441A (zh) * 2008-09-19 2009-02-25 苏州壹世通科技有限公司 一种基于固件的虚拟化平台系统
CN101859258A (zh) * 2009-04-08 2010-10-13 英特尔公司 系统管理模式处理器间中断重定向
US8407322B1 (en) * 2010-08-24 2013-03-26 Adobe Systems Incorporated Runtime negotiation of execution blocks between computers
CN104572168A (zh) * 2014-09-10 2015-04-29 中电科技(北京)有限公司 一种bios自更新保护系统及方法
CN104881611A (zh) * 2014-02-28 2015-09-02 国际商业机器公司 保护软件产品中的敏感数据的方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122732A (en) 1998-10-23 2000-09-19 Compaq Computer Corporation System management interrupt for a desktop management interface/system management basic input output system interface function
US6928548B1 (en) * 2000-09-29 2005-08-09 Intel Corporation System and method for verifying the integrity of stored information within an electronic device
US20040064712A1 (en) * 2002-09-27 2004-04-01 Intel Corporation Systems and methods for protecting media content
CN1940802A (zh) * 2005-09-30 2007-04-04 鸿富锦精密工业(深圳)有限公司 解除基本输入/输出系统写保护的系统及方法
US7584374B2 (en) * 2006-03-07 2009-09-01 Intel Corporation Driver/variable cache and batch reading system and method for fast resume
US7596648B2 (en) * 2007-03-08 2009-09-29 Dell Products L.P. System and method for information handling system error recovery
US8185353B2 (en) 2008-04-08 2012-05-22 Microsoft Corporation Determining computer system usage from logged events
JP5335634B2 (ja) * 2009-09-29 2013-11-06 レノボ・シンガポール・プライベート・リミテッド システム管理モードの特権レベルを保護するコンピュータ
US9015455B2 (en) 2011-07-07 2015-04-21 Intel Corporation Processsor integral technologies for BIOS flash attack protection and notification
US10089472B2 (en) * 2013-04-23 2018-10-02 Hewlett-Packard Development Company, L.P. Event data structure to store event data

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081890A (en) * 1998-11-30 2000-06-27 Intel Corporation Method of communication between firmware written for different instruction set architectures
CN1636190A (zh) * 2001-05-11 2005-07-06 英特尔公司 对多体系组件软件的系统管理模式加载程序和执行机制
CN1589431A (zh) * 2001-11-15 2005-03-02 英特尔公司 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法和系统
CN101373441A (zh) * 2008-09-19 2009-02-25 苏州壹世通科技有限公司 一种基于固件的虚拟化平台系统
CN101859258A (zh) * 2009-04-08 2010-10-13 英特尔公司 系统管理模式处理器间中断重定向
US8407322B1 (en) * 2010-08-24 2013-03-26 Adobe Systems Incorporated Runtime negotiation of execution blocks between computers
CN104881611A (zh) * 2014-02-28 2015-09-02 国际商业机器公司 保护软件产品中的敏感数据的方法和装置
CN104572168A (zh) * 2014-09-10 2015-04-29 中电科技(北京)有限公司 一种bios自更新保护系统及方法

Also Published As

Publication number Publication date
EP3314514B1 (en) 2020-01-22
EP3314514A4 (en) 2019-01-16
BR112018010437A8 (pt) 2019-02-26
CN108369520A (zh) 2018-08-03
EP3314514A1 (en) 2018-05-02
BR112018010437A2 (pt) 2018-11-21
US10296353B2 (en) 2019-05-21
WO2017131621A1 (en) 2017-08-03
US20180321947A1 (en) 2018-11-08

Similar Documents

Publication Publication Date Title
CN108369520B (zh) 保护基本输入/输出(bios)代码
US11163702B2 (en) Apparatus and method for handling page protection faults in a computing system
Xing et al. Intel® software guard extensions (Intel® SGX) software support for dynamic memory allocation inside an enclave
US7380276B2 (en) Processor extensions and software verification to support type-safe language environments running with untrusted code
US6081890A (en) Method of communication between firmware written for different instruction set architectures
US10157268B2 (en) Return flow guard using control stack identified by processor register
US9213623B2 (en) Memory allocation with identification of requesting loadable kernel module
US7805717B1 (en) Pre-computed dynamic instrumentation
US7996833B2 (en) Method and system for replacing instructions and instruction blocks in computer code
US20080120604A1 (en) Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation
Tang et al. Exploring control flow guard in windows 10
Stüttgen et al. Robust Linux memory acquisition with minimal target impact
EP3842938A1 (en) Function jump implementation method, device, and computer storage medium
Cook et al. Model checking boot code from AWS data centers
KR101059633B1 (ko) 멀티태스킹 가상 머신을 위한 힙 구성
Spear et al. Solving the starting problem: device drivers as self-describing artifacts
WO2022057418A1 (zh) 应用程序运行的方法、装置、终端设备及存储介质
Oliveri et al. In the land of MMUs: multiarchitecture OS-agnostic virtual memory forensics
US7293207B2 (en) Method for testing memory in a computer system utilizing a CPU with either 32-bit or 36-bit memory addressing
US20080022063A1 (en) Relocating of System Management Interface Code Within an Information Handling System
Naughton et al. Loadable hypervisor modules
Barr et al. Java: Too Much for Your System?
KR20100024801A (ko) 확장된 부트로더를 부팅하는 원낸드 플래쉬 메모리 장치 및그 부팅 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220308