CN101395587A - 防止可执行程序被修改 - Google Patents

防止可执行程序被修改 Download PDF

Info

Publication number
CN101395587A
CN101395587A CNA2007800071768A CN200780007176A CN101395587A CN 101395587 A CN101395587 A CN 101395587A CN A2007800071768 A CNA2007800071768 A CN A2007800071768A CN 200780007176 A CN200780007176 A CN 200780007176A CN 101395587 A CN101395587 A CN 101395587A
Authority
CN
China
Prior art keywords
page
executable code
computer
privilege
instruction
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.)
Granted
Application number
CNA2007800071768A
Other languages
English (en)
Other versions
CN101395587B (zh
Inventor
S·A·费尔德
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101395587A publication Critical patent/CN101395587A/zh
Application granted granted Critical
Publication of CN101395587B publication Critical patent/CN101395587B/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms

Abstract

通过将分配和修改现有存储器支持的代码页面的高特权操作系统(OS)函数来防止可执行代码被修改。所加载代码的完整性也可以在加载时刻在OS内核中被可选地检查。在系统中的特权检查在可执行页面被分配或修改时被调用。这一特权只被分配给操作系统内核以及该操作系统中高度可信的身份。

Description

防止可执行程序被修改
背景
如今,恶意软件代码(即,恶意软件(malware))通过获取对计算机CPU的控制进而执行恶意CPU指令(代码)引起对计算机系统的损害。现今应对恶意软件的方法并不是完全有效。一个常见方法是用基于签名的病毒检测工具来处理病毒。不幸的是这种方法无法发现同种攻击的下一代变种。由于病毒传播如此之快,此种病毒检测的反应性方法不能有效阻止许多种类的病毒。因此,随着新的且更有侵犯性的代码变得愈发流行,阻止恶意代码的执行变得愈发重要。
此外,现今的操作系统允许无特权的用户代码自由统治对可执行页面的分配和修改。因此,如果攻击者能够入侵现有程序(例如,通过缓存器溢出或者其它编程错误),则他们就能自由修改存储器中被入侵的程序,或者使得来自盘或者其它介质的新CPU指令被执行。
因此,需要新的过程和系统去解决现存技术的缺点。
概述
提供本概述以便以简化形式介绍概念的精选,这些概念将在以下的详细描述中被进一步描述。本概述并不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
考虑到上文所述本领域的缺点,提供了防止可执行代码被修改以及防止未经认可的代码被加载的方法。对于若干实施方式而言,一种防止可执行代码被修改的方法包括将把可执行代码载入存储器的函数限制到操作系统的特权环(privilegedring)。而且,该方法还包括实施可执行代码的页面级的保护。可以当可执行代码的可执行页面被分配或者可执行页面的属性被改变时调用特权检查。例如,特权检查在允许可执行页面的分配或可执行页属性的改变之前确定只分配给OS特权环的特权是否存在。作为上述方法的补充或替代,在可执行代码被载入存储器之前或之后检查其完整性。
另选的,相对于只是可执行代码,还利用一种防止数据页面被修改的方法,该方法包括将把数据页面载入存储器的合适限制到计算机的操作系统特权环。
此项发明的其它优点和特性,将会在下文中得到描述。
附图简述
结合以下所附简图,防止可执行代码被修改的方法进一步讨论。
图1是表示适于连同防止可执行代码被修改使用的示例性计算设备的框图,。
图2示出了在其中多个计算机化过程可以被实现用于执行阻止可执行代码被修改的示例性联网计算环境。
图3是示出使用特权检查阻止可执行代码被修改的过程的图示。
图4是示出操作系统的用户模式和内核模式特征的示例性体系结构的框图。
图5是示出在内核模式执行中使用安全检查来防止可执行代码被修改的过程的图示。
图6是示出在图5所示的阻止可执行代码修改的过程中使用的示例性安全检查的图示。
详细描述
某些特定细节在以下的描述和附图中阐述以提供对本发明各种实施方式的透彻理解。与计算和软件技术相关联的某些周知细节在以下讨论中不做阐述以免对本发明的各种实施方式产生不必要的模糊。此外,本领域普通技术人员将会理解无需以下描述的一个或多个细节也仍能够实践本发明的其它实施方式。最后,虽然对各种方法的描述参考了以下公开中的步骤和次序,但是这类描述是为提供本发明各实施方式的清楚实现,并且这些步骤和次序并不是实践本发明所必须的。
示例性计算环境
参见图1,示出的是表示适于连同实现上述过程一起使用的示例性计算设备的框图。例如,用来执行防止可执行代码被修改的过程和方法的计算机可执行指令可驻留在图1所示的这一计算环境中和/或在次环境中被执行。计算系统环境220仅仅是一个合适的计算环境示例,而非暗示对本发明的使用或功能范围的任何限制。此外计算环境220也不应该被解释为对示例性操作环境220中所示组件的的任一个或组合具有任何依赖或要求。例如,计算机游戏控制台也可包括下文所描述的用于连同上述实现过程一起使用的那些项目。
本发明的各方面可以用众多其它通用或专用计算系统环境或配置来操作。适合本发明使用的周知计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、网络PC、小型计算机、大型计算机、包括任一上述系统或设备的分布式计算环境等等。
本发明的各方面可以在计算机可执行指令的通用上下文中实现,比如计算机执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、解释代码、数据结构等等。本发明的各方面也可以在其中任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质两者中。
用于实现本发明各方面的示例性系统包括具有计算机241形式的通用计算设备。计算机241的组件可以包括但不限于处理单元259,系统存储器222以及用于将包括系统存储器的各种系统组件耦合至处理单元259的系统总线221。系统总线221可以是由若干类型总线结构的任一种,包括存储器总线或存储器控制器、外围总线、使用各类总线体系结构中的任一种的局域总线。作为示例而非局限,这类体系结构可包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、以及外围部件互连(PCI)总线(也称为小背板(Mezzanine)总线)。
计算机241通常包括各种计算机可读介质。计算机可读介质可以是可由计算机241访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括并不局限于,RAM、ROM、EEPROM、闪存或者其它存储技术、CD-ROM、多功能数码光碟(DVD)或者其它的光学存储盘、磁卡带、磁带、磁盘以及其它的磁存储介质、或者可以用来由计算机241存储期望信息以及能够由计算机访问的任何其他介质。通信介质通常具体化为诸如载波和其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据,且包括任何信息传递介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,以及诸如声学、RF、红外线和其它无线介质的无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器222包括易失性和/或非易失性的形式的计算机存储介质,诸如只读存储器(ROM)223和随机存储存取器(RAM)260。基本输入输出系统224(BIOS)一般被存储在ROM 223中,它包含用于协助计算机241内各元件之间传递信息的基本例程。RAM 260一般包含可以被处理组件259立即访问和目前正在操作的数据和/或程序模块。作为示例而非局限,图1描述了操作系统225、应用程序226、其它程序模块227以及程序数据228。
计算机241也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器238,对可移动、非易失性磁盘239进行读写的磁盘驱动器254,以及对可移动、非易失性光盘253,如CD ROM或其它光介质进行读写的光盘驱动器240。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器238通常由不可移动存储器接口,如接口234连接到系统总线221,磁盘驱动器239和光盘驱动器240通常由可移动存储器接口,如接口235连接到系统总线221。
上文所述以及图1所示的驱动器以及相关联的计算机存储介质给计算机241提供了对计算机可读指令、数据结构、程序模块以及其它数据的存储。例如,在图1中,示出硬盘驱动238存储操作系统258、应用程序257、其它的程序模块256和程序数据255。注意,这些组件可以与操作系统225、应用程序226、其它程序模块227和程序数据228相同或不同。操作系统258、应用程序257、其它程序模块256和程序数据255在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,如键盘251和定位设备252(通常指鼠标、跟踪球或触摸垫)向计算机241输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线259的用户输入接口236连接至处理单元259,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器242或其它类型的显示设备通过像视频接口232之类的接口与系统总线221相连。除了监视器外,计算机可以有通过外围接口233相连的其它外围输出设备,这些设备可以是扬声器244和打印机243。
计算机241可以使用至诸如计算机246的一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算机246可以是个人计算机、服务器、路由器、网络PC、对等设备和其它常见网络节点,且通常包括上文相对于计算机241描述的许多或全部元件,虽然在图1中仅仅显示出了存储器存储设备247。图1中所示的逻辑连接包括局域网(LAN)245和广域网(WAN)249,但是还可以包括其它网络。这种联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当用于局域网环境中,计算机241通过网络接口或者适配器237与局域网245相连。当用于广域网环境中,一般而言计算机241需要有调制解调器250或者其它的方式从而建立如英特网那样的广域网249的连接。调制解调器250可以是内置或外置的,它通过用户输入接口236或其它适当的机制连接至系统总线221。在网络化环境中,相对于计算机241所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例,而非限制,在图1中,远程应用程序248是存于存储器介质247中。这里所列举的网络连接只是示例,还可以有其它计算机连接方式被使用。
应该理解,这里所讨论的各种技术可以结合硬件或软件或者两者的适当组合来实现。因此,本发明的方法和装置或其某些方面或部分可以采用包含在有形介质中的程序代码(即,指令)的形式,有形介质诸如软盘、CD-ROM、硬盘驱动器、或者任何其它机器可读存储介质,其中,当程序代码加载至诸如计算机等的机器并由其执行时,机器成为实现本发明的装置。在可编程计算机上运行程序代码的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等实现和利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,程序也可以在需要时用汇编或机器语言实现。无论如何,语言可以是编译的和解释的语言,且与硬件实现相结合。
虽然示例性实施方式可以涉及在一个或多个独立计算机系统的环境中利用本发明的各个方面,但本发明并不局限于此,而是可以结合像网络或者分布式计算环境之类的任何计算环境来实现。而且,本发明的各方面可以在多个处理芯片或设备中实现或者跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。这样的设备可以包括个人计算机、网络服务器、手持式设备、超级计算机或者集成到如汽车和飞机等其他系统中的计算机。
考虑到其它的计算环境可能根据图1所示的结构框图构造各种各样的计算环境,本文提供的系统和方法并不被解释为局限于某种特定的计算机体系结构。相反地,本发明不应局限于任何单个实施方式,而是应该根据所附权利要求在更广的范围内解释。
接下来参见图2,示出的是在其中可以实现许多计算化过程以执行上文所描述过程的示例性联网计算环境。s。本领域普通技术人员能够认识到网络可以连接任何计算机或者其它客户机或服务设备,或者可位于分布式计算环境中。在这点上,具有任意数目处理器、存储器、存储单元以及任意数目同时运行的应用和过程的计算机系统或环境被认为是适于连同所提供的系统和方法一起使用的。
通过计算设备和系统的交互,分布式计算提供计算机资源和服务的共享。这些资源和服务包括信息的交换、文件的高速缓存存储和盘存储。分布式计算利用网络连接性来保证客户可以利用总资源来实现整个系统的优化。从这点上来讲,各种设备都可以具有涉及本文所描述过程的应用、对象或资源。
图2是示例性联网或分布式计算环境的示意图。此环境包括计算机设备271、272、276和277,对象273、274、275以及数据库278。这些实体271、272、273、274、275、276、277和278的每一个可以包括或使用程序、方法、数据存储、可编程逻辑等等。实体271、272、273、274、275、276、277和278可涉及相同或不同的设备的各部分,这些设备诸如PDA、音频/视频设备、MP3播放器、个人计算机等。每个实体271、272、273、274、275、276、277和278可以通过通信网络同另一实体271、272、273、274、275、276、277和278进行通信。在这一点上,任何实体可以负责数据库278或其它存储设备的维护和更新。
这一网络270自己可以包括为图2系统提供服务的其它计算实体,且自己可以表示多个互连网络。根据本发明的一方面,每个实体271、272、273、274、275、276、277和278可以包含离散功能程序模块,从而可以利用API或者其它对象、软件、固件和/或硬件向一个或多个其他实体271、272、273、274、275、276、277和278服务请求。
还应理解诸如275的对象可以主存在计算设备276上。因此,虽然图中所描述的物理环境将连接设备示出为计算机,但这仅是示例,并且物理环境可以被替换地描绘或描述为包括如PDA、电视、MP3播放器等的各种数字设备以及诸如接口、COM对象等的软件对象。
存在有支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可以通过有线或无线系统,通过局域网或广域网连接在一起。如今,许多网络耦合至因特网,而后者给广泛分布的计算机提供基础结构并且包含了许多不同的网络。任何这些基础结构,无论其是否耦合至因特网,都可连同所提供的方法和系统一起使用。
网络基础结构可以启用网络拓扑结构的主机,诸如客户/服务器、对等体、或混合体系结构。“客户”是一类或组中的成员,该类或组使用与其不相关的另一类或组的服务。在计算中,客户是进程,即一般说来是一组需要其它程序提供服务的指令或任务。客户进程利用所请求的服务而无需“知道”任何关于其他程序和服务本身的工作细节。在客户/服务器体系结构中,尤其是在联网系统中,客户是指能够访问由例如服务器的另一计算机提供的共享网络资源的计算机。在图2的例子中,任何实体271、272、273、274、275、276、277和278可以依据情况被视为客户、服务器或两者。
典型而非必须地,服务器是可以通过诸如因特网的远程或局域网进行访问的远程计算机系统。客户进程可以在第一台计算机系统上活动,而服务器进程可以在第二台计算机系统上活动,它们经通信媒介彼此通信,从而提供分布式功能并允许多个客户利用服务器的信息汇集能力。任何软件对象都以跨多个计算设备或对象分布。
客户和服务器利用由协议层提供的功能来彼此通信。例如,超文本传输协议(HTTP)是连同万维网(WWW)或“Web”一并使用的常见协议。通常,像因特网协议(IP)地址或诸如统一资源定位器(URL)等其他引用的计算机网络地址可用于彼此标识服务器或客户计算机。网络地址可被称为URL地址。可以经通信介质来提供通信,例如客户和服务器可以经由用于大容量通信的TCP/IP连接来彼此耦合。
考虑到各种计算环境可根据图2所提供的通用架构来构建,以及在诸如图2的网络环境中的计算方式今后可能发生的改变,本文提供的系统和方法不能被解释为以任何方式限于某一特定的计算体系结构。相反,本发明不应限于任何单个实施方式,而是应该根据所附权利要求的宽度和范围来解释。
防止可执行代码被修改的硬件和操作系统
接下来参见图3,示出的是示出使用特权检查来防止可执行代码被修改的过程框图。可以向操作系统的存储器管理器添加支持程序,用以检查当可执行存储器页面被分配或其属性被修改时,调用者是否具有特权。现代的x64和
Figure A200780007176D00111
的CPU允许基于硬件的实施和可执行页面的跟踪。例如,首先从Windows  ServicePack 2开始,
Figure A200780007176D00113
系统32位版本利用由
Figure A200780007176D00114
定义的非执行页面保护(NX)处理器特性或者利用由
Figure A200780007176D00115
定义的执行禁用位(Execute Disable Bit)特性。为了使用这些处理器特性,处理器必须运行在物理地址扩展(PAE)模式下。Windows
Figure A200780007176D00116
的64位版本在64位扩展上使用NX处理器特性以及在IPF处理器上使用访问权限页表项(PTE)域的某些值。
执行禁用位能力是32位
Figure A200780007176D00117
架构的增强。具有执行禁用位能力的IA-32处理器可以保护数据页免于恶意软件使用来执行代码。处理器通过以下任一种模式提供页面保护:
·传统保护模式,如果物理地址扩展(PAE)被启用
·IA-32e模式,当
Figure A200780007176D00118
64位扩展存储器技术(
Figure A200780007176D00119
 EM64T)被启用时
注意进入IA-32模式需要启用PAE。虽然执行禁用位能力不引入新指令,但是它的确需要操作系统运行在启用PAE的环境中并且为存储器建立页面粒度保护策略。
通过在EAX中输入80000001H,软件可以使用CPUID指令来检测是否有执行禁用位能力。其存在通过EDX内的返回值指示。如果EDX的第20位被置位,则执行禁用位能力可用。如果CPUID扩展功能80000001H报告执行禁用位能力可用且PAE被启用,则软件可以通过将IA32_EFER MSR(地址C0000080H)的NXE位设置为1来启用执行禁用位能力。如果由CPUID扩展功能80000001H返回的EDX寄存器的第20位或第29位为1,则IA32_EFER可用。
当物理地址扩展被启用时(无论是在IA-32e的模式下还是在传统保护模式下),执行禁用位能力通过将IA32_EFER的第11位设置为1来启用。如果CPUID扩展功能80000001H包括执行禁用位能力不可用,则IA32_EFER的第11位将被保留。对IA32_EFER.NXE的写入将会产生#GP异常。微软
Figure A200780007176D001110
存储器管理器也会在所分配存储器页面上跟踪页面属性。
再次参见图3,如果可执行存储器页面被分配或它们的属性被改变305,则执行特权检查310来确定315调用者是否具有分配存储器页面或改变其属性的正确特权。如果存在正确特权,则存储器页面的分配或属性修改得到OS的允许。若为否,则存储器页面的分配或属性修改不为OS 325所允许。
在代码能够运行之前,所有的对象代码必须被转换成可执行代码。所有的对象代码被收集到一起并且加入关于每个例程如何调用它需要调用的其他例程和系统函数的信息。在很多的软件环境中,所有的对象代码被链接在一起成为单个“可执行映像”,它是包含所有例程的大片机器代码并且被存储在盘上。在运行时,这一大型可执行映像被加载到主存储器中并在随后被执行。在防止可执行代码被修改的另一方面,诸如载入可执行映像的函数由用户模式移至内核模式。
接下来参见图4,示出的是用于说明操作系统的用户模式和内核模式特征的示例性体系结构的框图。例如,内核模式405其中执行Microsoft 
Figure A200780007176D00121
的核,并且在内核405中各组件可以直接访问硬件以及执行对包括存储器、设备和进程的计算机资源的服务。因此,只要在用户模式410下执行的程序想要执行I/O、分配或解除分配虚拟存储器,开启一线程或进程,或与全局资源交互时,它必须调用420存留于内核模式405中的一个或多个服务445。
调用本机应用编程接口(API)的KERNEL32(内核32)425函数直接包括其所有的I/O(例如,CreatFile()(创建文件)、ReadFile()(读文件)、WriteFile()(写文件))、同步(例如,WaitForSingleObject()(等待单个对象)、SetEvent()(设置事件))和存储器管理(例如VirtualAlloc()(虚拟分配),VirtualProtect()(虚拟保护))函数。实际上,KERNEL32的425输出的大部分例程直接使用本机API。在图4示出了从执行Win32调用(CreatFile())的Win32应用430经由KERNEL32 425、NTDLL 435进入内核模式405的控制流程,在内核模式405中控制被转换为NtCreateFile(Nt创建文件)440系统服务。
接下来参见图5,示出的是用于说明使用在内核模式执行下的安全检查来防止可执行代码被修改的过程图示。在诸如将可执行映像从用户模式载入内核模式405的移动函数中,如果调用了加载可执行代码映像505的函数,则做出到内核模式405的切换510,从而做出适当的安全检查。否则,应用的执行将会留在用户模式410。普通的用户模式代码不会有足够的权限来分配可执行代码页。大部分代码不能自我修改,所以这种方式可以跨例如基于微软
Figure A200780007176D00122
系统而被很广泛地实施。
接下来参见图6,示出的是用于说明在图5所示的防止可执行代码被修改的过程中使用的示例性安全检查的图示。如果应用触发了对可执行代码映像505的装载,则由OS做出到内核模式405的切换510,使得合适安全检查得以做出,诸如代码完整性、签名检查或者内核之内的其他安全协议检查605。例如,代码完整性检测可是加密校验和,即一种分派给文件并在今后用来“测试”文件以检验该文件中的数据尚未被恶意修改的数值(被称为检验和)。加密检验和通过一系列复杂的数学操作(已知为加密算法)将文件中的数据转换为被称为散列值的一串固定数字,后者则在随后用作检验和。如果不知道是用何种加密算法来产生散列值,那么未经授权的人是几乎不可能在改变数据文件的同时又能保证相应的检验和不改变。加密校验和也可被称为消息鉴别码、完整性检查值、修改检测码、或者消息完整性码。
签名是对象中数据的加密算术摘要。因此如果验证期间对象中的数据与签名时的数据相匹配,则认为该签名匹配或者有效。无效签名基于将对象签名时被创建的加密算术摘要与签名验证期间的加密算术摘要相比较来确定。签名验证过程比较两个摘要值。如果两个值不相同,则对象内容自从签名完成后已经改变,因此可以认为该签名无效。再次参考图6,如果代码完整性或者签名检查通过610,那么就允许模块加载发生615。否则,不允许模块加载发生620。需要注意的是本文描述的过程无需仅仅针对可执行页面,它也可以扩展到例如只读数据页面和加载模块的任何其他方面。
额外安全策略检查的一个示例涉及限制模块类型或者被加载模块的原型。例如,微软视窗系统服务可以被配置为只允许微软可执行代码以本机格式被加载。
本文描述的各种系统、方法和技术可以使用硬件或软件或其适当组合来实现。因此本发明的方法和装载或其某些方面或部分可以采取包含在诸如软盘、CD-ROM、硬盘驱动器、或者任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机之类的机器内并由其执行时,该机器成为用于实现本发明的装载。在可编程的计算机上运行程序代码的情况下,计算机通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性的存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。一个或多个程序优选地以高级过程或面向对象的编程语言实现以与计算机系统通信。然而,程序也可以在需要时用汇编或机器语言实现。无论如何,语言可以是编译的和解释的语言,且与硬件实现相结合。
本发明的方法和装置也可以具体化为通过某种传输介质传输的程序代码的形式,诸如经电线或电缆、通过光纤或者经由任何其它传输形式,其中当程序代码由诸如EPROM、门阵列、可编程逻辑设备(PLD)、诸如以下附图所示的客户计算机、视盘记录器等机器来接收、加载并执行时,此机器成为用于实践本发明的装置。当在通用处理器上运行时,程序代码结合处理器来提供执行本发明索引功能的唯一装置。
虽然已结合各个附图的优选实施方式对本发明进行了描述,可以理解,可以使用其它类似的实施方式,或可以对所描述的实施方式进行修改或添加来实现本发明的相同功能而不背离本发明。此外,应当强调,可构想包括手持式设备操作系统和其它应用专用的硬件或软件接口系统的各种计算机平台,尤其在无线联网设备的数量持续增长时。因此本发明不应限于任何单个实施方式,而是应该根据所附权利要求的宽度和范围来解释。
最后,本文描述的公开实施方式可以适用于其它处理器体系结构、基于计算机的系统或者系统虚拟化使用,而这些实施方式由本文公开明确预期,。因此本发明不应限于本文描述的特定实施方式而相反已被更宽泛地解释。

Claims (20)

1.一种用于防止可执行代码(305)被修改的方法,包括:将把可执行代码(305)载入存储器(232)的函数(505)限制到操作系统(OS)(258)的特权环(310)。
2.如权利要求1所述的方法,其特征在于,还包括实施所述可执行代码的页面保护。
3.如权利要求2所述的方法,其特征在于,还包括当所述可执行代码的可执行页面被分配或者当所述可执行页面的属性被改变时调用特权检查。
4.如权利要求3所述的方法,其特征在于,所述特权检查在允许所述可执行页面的分配或所述可执行页面属性的改变之前确定只分派给所述OS特权环的特权是否存在。
5.如权利要求4所述的方法,其特征在于,还包括在所述可执行代码被加载之后,检查其完整性。
6.如权利要求5所述的方法,其特征在于,所述页面级保护使用基于硬件的实施和对可执行页面的跟踪来执行的。
7.一种其上具有指令来执行权利要求1所述步骤的计算机可读介质。
8.一种其上具有指令来执行权利要求2所述步骤的计算机可读介质。
9.一种其上具有指令来执行权利要求3所述步骤的计算机可读介质。
10.一种其上具有指令来执行权利要求4所述步骤的计算机可读介质。
11.一种其上具有指令来执行权利要求5所述步骤的计算机可读介质。
12.一种其上具有指令来执行权利要求6所述步骤的计算机可读介质。
13.一种防止可执行代码(305)被修改的系统,包括:用于将把可执行代码(305)载入存储器(232)的函数(505)限制到到操作系统(OS)(258)的特权环(310)的装置。
14.如权利要求13所述的系统,其特征在于,还包括用于实施可执行代码的页面保护的装置。
15.如权利要求14所述的系统,其特征在于,还包括用于当所述可执行代码的可执行页面被分配或者当所述可执行页面的属性被改变时调用特权检查的装置。
16.如权利要求15所述的系统,其特征在于,所述用于调用特权检查的装置在允许所述可执行页面的分配或所述可执行页面属性的改变之前确定只分配给所述OS特权环的特权是否存在。
17.如权利要求16所述的系统,其特征在于,还包括用于在所述可执行代码被加载之后检查其完整性的装置。
18.如权利要求17所述的系统,其特征在于,所述用于实施页面级保护的装置包括用于基于硬件的实施和对可执行页面的跟踪的装置。
19.一种防止数据(255)页面被修改的方法,包括:
将把数据(255)页面载入存储器(232)的函数(505)限制到操作系统(OS)(258)的特权环(310)。
20.一种其上具有指令来执行权利要求19所述步骤的计算机可读介质。
CN2007800071768A 2006-03-01 2007-02-28 防止可执行程序被修改 Expired - Fee Related CN101395587B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/365,364 2006-03-01
US11/365,364 US20070234330A1 (en) 2006-03-01 2006-03-01 Prevention of executable code modification
PCT/US2007/005398 WO2007103192A2 (en) 2006-03-01 2007-02-28 Prevention of executable code modification

Publications (2)

Publication Number Publication Date
CN101395587A true CN101395587A (zh) 2009-03-25
CN101395587B CN101395587B (zh) 2011-09-07

Family

ID=38475416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800071768A Expired - Fee Related CN101395587B (zh) 2006-03-01 2007-02-28 防止可执行程序被修改

Country Status (7)

Country Link
US (1) US20070234330A1 (zh)
EP (1) EP1989627A4 (zh)
JP (1) JP4890569B2 (zh)
KR (1) KR20080103976A (zh)
CN (1) CN101395587B (zh)
TW (1) TW200809573A (zh)
WO (1) WO2007103192A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103268440A (zh) * 2013-05-17 2013-08-28 广东电网公司电力科学研究院 可信内核动态完整性度量方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664026B2 (en) 2006-06-19 2010-02-16 Liquid Computing Corporation Methods and systems for reliable data transmission using selective retransmission
US8856938B2 (en) * 2008-07-30 2014-10-07 Oracle America, Inc. Unvalidated privilege cap
KR101895453B1 (ko) * 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
US20140366045A1 (en) * 2013-06-07 2014-12-11 Microsoft Corporation Dynamic management of composable api sets
CN104462956B (zh) * 2013-09-23 2017-07-25 安一恒通(北京)科技有限公司 一种获得操作系统控制权的方法和装置
US20180012024A1 (en) * 2015-01-30 2018-01-11 Hewlett-Packard Development Company, L.P. Processor state determination
US10803165B2 (en) * 2015-06-27 2020-10-13 Mcafee, Llc Detection of shellcode
CN112100954A (zh) * 2020-08-31 2020-12-18 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916385A (en) * 1973-12-12 1975-10-28 Honeywell Inf Systems Ring checking hardware
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US5483649A (en) * 1994-07-01 1996-01-09 Ybm Technologies, Inc. Personal computer security system
US6775779B1 (en) * 1999-04-06 2004-08-10 Microsoft Corporation Hierarchical trusted code for content protection in computers
US6529985B1 (en) * 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6748592B1 (en) * 2000-02-14 2004-06-08 Xoucin, Inc. Method and apparatus for protectively operating a data/information processing device
US20040034794A1 (en) * 2000-05-28 2004-02-19 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US6854046B1 (en) * 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
RU2307388C2 (ru) * 2001-08-13 2007-09-27 Квэлкомм Инкорпорейтед Привилегия доступа на уровне приложений к области памяти компьютерного устройства
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US7308576B2 (en) * 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
DE60322366D1 (de) * 2002-04-18 2008-09-04 Advanced Micro Devices Inc Rechnersystem mit einem für einen sicheren ausführungsmodus geeigneten cpu und einem sicherheitsdienst-prozessor die über einen gesicherten kommunikationsweg miteinander verbunden sind
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
TWI229817B (en) * 2003-01-07 2005-03-21 Wistron Corp Kernel-mode operating system of application program and method thereof
US20050108516A1 (en) * 2003-04-17 2005-05-19 Robert Balzer By-pass and tampering protection for application wrappers
US7480655B2 (en) * 2004-01-09 2009-01-20 Webroor Software, Inc. System and method for protecting files on a computer from access by unauthorized applications
US7437759B1 (en) * 2004-02-17 2008-10-14 Symantec Corporation Kernel mode overflow attack prevention system and method
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
US20060047959A1 (en) * 2004-08-25 2006-03-02 Microsoft Corporation System and method for secure computing
KR100704721B1 (ko) * 2004-09-10 2007-04-06 (주) 세이프아이 실시간 감시를 통한 컴퓨터 보호 방법 및 이에 따라 보호되는 컴퓨터 보호 시스템과 실행가능한 파일이 보호되는 시스템
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US7607173B1 (en) * 2005-10-31 2009-10-20 Symantec Corporation Method and apparatus for preventing rootkit installation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103268440A (zh) * 2013-05-17 2013-08-28 广东电网公司电力科学研究院 可信内核动态完整性度量方法

Also Published As

Publication number Publication date
TW200809573A (en) 2008-02-16
JP4890569B2 (ja) 2012-03-07
KR20080103976A (ko) 2008-11-28
CN101395587B (zh) 2011-09-07
EP1989627A2 (en) 2008-11-12
US20070234330A1 (en) 2007-10-04
EP1989627A4 (en) 2009-11-04
WO2007103192A2 (en) 2007-09-13
WO2007103192A3 (en) 2007-11-01
JP2009528632A (ja) 2009-08-06

Similar Documents

Publication Publication Date Title
CN101395587B (zh) 防止可执行程序被修改
JP5543156B2 (ja) 仮想化されたブロック入出力切り替えによるアプリケーション管理のエージェントレス・エンフォースメント
CN101512512B (zh) 利用软件名声的软件授权
Palisse et al. Data aware defense (DaD): towards a generic and practical ransomware countermeasure
CN103124975A (zh) 用于在计算机系统中实行资源访问控制的方法
Shaikh et al. Security issues in cloud computing
TW201227394A (en) Security through opcode randomization
CN101876921A (zh) 一种虚拟机迁移决策方法、装置及系统
CN107912064A (zh) 壳代码检测
Wang et al. Between mutual trust and mutual distrust: Practical fine-grained privilege separation in multithreaded applications
CN105009134A (zh) 提供安全操作的方法、装置、系统和计算机可读介质
Gupta et al. An insecurity study of ethereum smart contracts
US20200110893A1 (en) Controlling installation of unauthorized drivers on a computer system
Kang et al. A strengthening plan for enterprise information security based on cloud computing
JP2005234661A (ja) アクセスポリシ生成システム、アクセスポリシ生成方法およびアクセスポリシ生成用プログラム
US20220385596A1 (en) Protecting integration between resources of different services using service-generated dependency tags
JP4853671B2 (ja) アクセス権限判定システム、アクセス権限判定方法及びアクセス権限判定プログラム
Abdullah et al. Towards a dynamic file integrity monitor through a security classification
Sarishma et al. Blockchain based framework to maintain chain of custody (coc) in a forensic investigation
Hou et al. Investigation of taint analysis for Smartphone-implicit taint detection and privacy leakage detection
Youn et al. System Information Comparison and Analysis Technology for Cyber Attacks
Xu et al. Research on trusted computing technology for embedded real-time operation system
Gariba et al. Towards an Advanced Integrated Security Framework for Cloud Computing
Wang et al. Security-as-a-Service with Cyberspace Mimic Defense Technologies in Cloud
Chang et al. The development of security system for sharing CAD drawings in U-environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110907

Termination date: 20130228