CN101535969A - 使用内核模式重定向来改变代码执行路径 - Google Patents

使用内核模式重定向来改变代码执行路径 Download PDF

Info

Publication number
CN101535969A
CN101535969A CNA2006800242589A CN200680024258A CN101535969A CN 101535969 A CN101535969 A CN 101535969A CN A2006800242589 A CNA2006800242589 A CN A2006800242589A CN 200680024258 A CN200680024258 A CN 200680024258A CN 101535969 A CN101535969 A CN 101535969A
Authority
CN
China
Prior art keywords
instruction
computer
code
function
kernel
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.)
Pending
Application number
CNA2006800242589A
Other languages
English (en)
Inventor
N·本-茨维
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 CN101535969A publication Critical patent/CN101535969A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)

Abstract

一种用于重定向正运行的进程中的代码执行路径的机制。将1字节中断指令(例如,INT 3)插入到代码路径中。中断指令将控制传递给内核句柄,后者在执行替换函数执行之后,返回来继续执行该进程。替换函数驻留在内核句柄可访问的存储器空间中。可在无需重引导其上正运行的进程正在执行的计算设备而应用重定向机制。此外,可无需重写原始代码中多于一个的字节来应用重定向机制。

Description

使用内核模式重定向来改变代码执行路径
发明领域
本发明一般涉及计算机软件领域。更具体地,本发明涉及用于更新正在存储器中运行的进程的方法。
发明背景
通常期望在无需改变执行模块原始在磁盘上的映像,也不必重启计算机的情况下改变正运行进程中的代码执行路径。实现此的一种方式是经由“热修补(Hotpatching)”机制。热修补是通过将来自软件更新的代码自动插入到正运行的进程内来允许安装软件更新而无需用户重启其计算机的存储器内修补机制。这意味着,系统文件可在其使用时被更新。
例如,热修补可通过在易受攻击的函数的开始处注入JMP指令来旁路正运行的进程中的该易受攻击函数。当该函数被调用时,它跳转至也由热修补机制加载到进程空间中的新函数。该方法的问题在于,注入的JMP指令可能会以导致不期望的行为的方式来重写多个指令。在热修补情况中,如果易受攻击函数的开始处在前5个字节中包括3个汇编操作码(1字节操作码、2字节操作码、2字节操作码),则JMP注入将替换所有5个字节。如果处理器正执行第一字节操作码,且注入改变了下两个操作码,则将导致不期望的处理器行为。
发明概述
一种用于重定向正运行的进程中的代码执行路径的机制。将1字节中断指令(例如,INT 3)插入到代码路径中。中断指令将控制传递给内核句柄,后者在执行替换函数执行之后,返回来继续执行该进程。替换函数驻留在内核句柄可访问的存储器空间中。可在无需重引导其上正运行的进程正在执行的计算设备而应用重定向机制。此外,可无需重写原始代码中多于一个的字节来应用重定向机制。
通过阅读以下参考附图进行的说明性实施例的详细描述,本发明的其它特征和优点将是显而易见的。
附图简述
当结合附图阅读时,前述概述以及以下的优选实施例的详细描述将被更好地理解。为说明本发明的目的,在附图中示出了本发明的示例性构造;然而,本发明不限于所公开的特定方法和工具。在附图中:
图1是示出可在其中实现本发明的各方面的示例性计算环境的框图;以及
图2示出了根据本发明执行的示例性进程。
优选实施例的详细描述
示例性计算环境
图1示出了可在其中实现本发明的合适的计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明的各方面可用众多其它通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
本发明的各方面可在诸如程序模块等由计算机执行的计算机可执行指令的通用语境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。本发明的各方面也可以在分布式计算环境中实现,其中任务由通过通信网络或其它数据传输介质链接的远程处理设备执行。在分布式计算环境中,程序模块和其它数据可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总部件互连(PCI)总线(也被称为Mezzanine总线)、外围部件互连Express(PCI-Express)以及系统管理总线(SMBus)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,且可包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术;CD-ROM、数字视频盘(DVD)或其它光盘存储;磁带盒、磁带、磁盘存储或其它磁性存储设备;或能用于存储所需信息且可以由计算机110访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、射频、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,诸如ROM 131和RAM 132。基本输入/输出系统133(BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基本例程,它通常被存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图1示出了包括操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了向不可移动、非易失性磁介质读写的硬盘驱动器141,向可移动、非易失性磁盘152读写的磁盘驱动器151,以及向诸如CD-ROM或其它光学介质等可移动、非易失性光盘156读写的光盘驱动器155。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由诸如接口140的不可移动存储器接口连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由诸如接口150的可移动存储器接口连接至系统总线121。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在此处中被给出了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器191或其它类型的显示器也经由接口,诸如视频适配器190连接至系统总线121。除监视器以外,计算机也可包括其它外围输出设备,诸如扬声器197和打印机196,它们可通过输出外围接口195连接。
计算机110可使用至一个或多个远程计算机,诸如远程计算机180的逻辑连接在网络化环境下操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。所示逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN联网环境中使用时,计算机110可包括调制解调器172或用于在诸如因特网等WAN 173上建立通信的其它手段。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
示例性实施例
本发明针对用于通过有利地使用被插入到代码路径内的1字节中断指令(例如,INT 3)来重定向正在存储器中运行的进程中的代码执行路径而不会导致不期望的行为的一种机制。中断指令将控制传递给内核句柄,后者在执行替换函数之后,返回来继续执行该进程。
参考图2,示出了正在存储器中运行的示例性进程200。根据本发明,正在存储器中运行的进程200的执行路径201(例如,要被替换的易受攻击函数的开始处)可通过以1字节中断指令(例如,INT 3)来重写现有指令202而被改变,其中原始代码203的其余部分保持不被更改。INT 3一般被用作用以退出执行的调试器(debugger)的陷阱,以便执行其它指令。
中断指令可使内核句柄204被调用。该中断的内核句柄204包括使得自中断的返回继续进入新指令206(例如,替换函数)而不是返回到原始函数的机制。新指令206被放入内核句柄204已知的存储器空间中。因为中断指令为1字节指令,本发明有利地提供了不会重写原始代码203中多于一个字节的代码转换(diversion)机制。
尽管结合各个附图的优选实施例描述了本发明,但可以理解,可使用其它类似的实施例,或可对所述实施例作出修改或添加以便执行与本发明相同的功能而不与之背离。例如本领域的技术人员可以认识到,如本申请所述的本发明可应用于任何计算设备或环境,无论有线还是无线,且可被应用于经由通信网络连接并跨网络交互的任何数目的这样的计算设备。而且,应强调,尤其随着无线联网的设备的数目继续增长,构想了各种计算机平台,包括手持式设备操作系统和其它应用专用操作系统。此外,本发明可使用多个处理芯片或设备实现或跨其实现,且存储可类似地跨多个设备实现。从而,本发明不应被限于任何单个实施例,而是应根据所附权利要求书的宽度和范围来解释。

Claims (20)

1.一种用于重定向正在运行的进程中的代码执行路径的方法,包括:
将指令注入所述代码执行路径内;
将控制传递给内核句柄;
执行由所述内核句柄调用的替换函数;以及
返回至所述代码执行路径。
2.如权利要求1所述的方法,其特征在于,所述指令为中断。
3.如权利要求2所述的方法,其特征在于,所述中断为INT 3中断指令,且所述中断指令长为1字节。
4.如权利要求2所述的方法,其特征在于,所述内核句柄包括使得自所述中断指令的返回继续进入所述替换函数的机制。
5.如权利要求1所述的方法,其特征在于,还包括插入所述指令,使得仅重写所述代码路径中的所述原始代码的一个字节。
6.如权利要求1所述的方法,其特征在于,还包括将所述替换函数加载到可由所述内核函数访问的存储器空间内。
7.如权利要求1所述的方法,其特征在于,还包括在无需重新引导其上所述正运行的进程正在执行的计算设备的情况下执行所述方法。
8.一种通过使用中断来替换现有函数而改变代码执行路径的方法,包括:
将所述中断注入到所述现有函数内;
将控制传递给内核句柄;
执行由所述内核句柄调用的替换函数;以及
返回至所述代码执行路径。
9.如权利要求8所述的方法,其特征在于,所述中断为INT3中断指令,而所述中断指令长为1字节。
10.如权利要求9所述的方法,其特征在于,所述内核句柄包括使得自所述中断指令的返回继续进入所述替换函数的机制。
11.如权利要求8所述的方法,其特征在于,还包括插入所述中断使得仅重写所述代码路径的所述原始代码中的一个字节。
12.如权利要求8所述的方法,其特征在于,还包括将所述替换函数加载到可由所述内核函数访问的存储器空间内。
13.如权利要求8所述的方法,其特征在于,还包括在无需重新引导其上正执行所述现有函数的进程正运行的计算设备的情况下执行所述方法。
14.一种其上含有用于重新引导正运行的进程中的代码执行路径的计算机可执行指令的计算机可读介质,所述计算机可执行指令执行一种方法,包括:
将指令插入所述代码执行路径;
将控制传递给内核句柄;
执行由所述内核句柄调用的替换函数;以及
返回至所述代码路径。
15.如权利要求14所述的计算机可读介质,其特征在于,所述指令为中断。
16.如权利要求15所述的计算机可读介质,其特征在于,所述中断为INT3中断指令,且所述中断指令长为1字节。
17.如权利要求15所述的计算机可读介质,其特征在于,所述内核句柄包括使得自所述中断指令的返回继续进入所述替换函数的机制。
18.如权利要求14所述的计算机可读介质,其特征在于,还包括用于插入所述指令使得仅重写所述代码路径中的所述原始代码的一个字节的指令。
19.如权利要求14所述的计算机可读介质,其特征在于,还包括用于将所述替换函数加载到可由所述内核函数访问的存储器空间内的指令。
20.如权利要求14所述的计算机可读介质,其特征在于,还包括用于在无需重新引导其上所述正运行的进程正在执行的计算设备的情况下执行所述方法的指令。
CNA2006800242589A 2005-07-08 2006-07-10 使用内核模式重定向来改变代码执行路径 Pending CN101535969A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/177,079 US7500245B2 (en) 2005-07-08 2005-07-08 Changing code execution path using kernel mode redirection
US11/177,079 2005-07-08

Publications (1)

Publication Number Publication Date
CN101535969A true CN101535969A (zh) 2009-09-16

Family

ID=37619714

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800242589A Pending CN101535969A (zh) 2005-07-08 2006-07-10 使用内核模式重定向来改变代码执行路径

Country Status (8)

Country Link
US (1) US7500245B2 (zh)
EP (1) EP1902353A2 (zh)
JP (1) JP2009501369A (zh)
KR (1) KR20080035564A (zh)
CN (1) CN101535969A (zh)
NO (1) NO20076359L (zh)
RU (1) RU2007148413A (zh)
WO (1) WO2007008880A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979911B2 (en) * 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US8103592B2 (en) * 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US7950001B2 (en) * 2006-09-08 2011-05-24 International Business Machines Corporation Method and apparatus for instrumentation in a multiprocessing environment
CA2923231C (en) 2013-09-12 2020-06-02 Virsec Systems, Inc. Automated runtime detection of malware
EP3161715A1 (en) 2014-06-24 2017-05-03 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US9459858B2 (en) * 2015-01-07 2016-10-04 International Business Machines Corporation Selectively hotpatching only a selection of processes of a running instance of an application that match a selection criteria
EP3472746B1 (en) 2016-06-16 2020-05-13 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
CN109582300A (zh) * 2018-11-30 2019-04-05 阿里巴巴集团控股有限公司 基于路径的代码变更分析方法、装置及设备
CN109933985B (zh) * 2019-02-25 2022-02-25 百度在线网络技术(北京)有限公司 一种绕过挂钩的方法、装置、设备和计算机存储介质
CN111897632B (zh) * 2019-05-05 2023-10-20 兆易创新科技集团股份有限公司 一种中断处理方法、装置、电子设备及存储介质
CN113672273B (zh) * 2021-10-21 2022-04-15 阿里云计算有限公司 数据处理方法、系统及设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671396A (en) * 1994-12-05 1997-09-23 Intel Corporation M and A for executing firmware of an add-on FAX/Modem card on the host processor while maintaining compatibility
US5991790A (en) * 1996-07-01 1999-11-23 Sun Microsystems, Inc. Generation and delivery of signals in a two-level, multithreaded system
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US7882247B2 (en) * 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US6775728B2 (en) * 2001-11-15 2004-08-10 Intel Corporation Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
US20030145314A1 (en) * 2002-01-31 2003-07-31 Khoa Nguyen Method of efficient dynamic data cache prefetch insertion
US8612992B2 (en) * 2003-04-09 2013-12-17 Jaluna Sa Operating systems
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling
DE112005002949T5 (de) * 2004-11-24 2007-12-27 Discretix Technologies Ltd. System, Verfahren und Vorrichtung zur Sicherung eines Betriebssystems
US7380241B2 (en) * 2004-12-07 2008-05-27 International Business Machines Corporation Scalable and improved profiling of software programs

Also Published As

Publication number Publication date
RU2007148413A (ru) 2009-07-10
WO2007008880A2 (en) 2007-01-18
KR20080035564A (ko) 2008-04-23
US20070011686A1 (en) 2007-01-11
WO2007008880A3 (en) 2009-04-09
EP1902353A2 (en) 2008-03-26
JP2009501369A (ja) 2009-01-15
US7500245B2 (en) 2009-03-03
NO20076359L (no) 2008-02-01

Similar Documents

Publication Publication Date Title
CN101535969A (zh) 使用内核模式重定向来改变代码执行路径
JP6815385B2 (ja) アプリケーションのコード難読化のためのシステムおよび方法
CN100555218C (zh) 用于改善片上仿真系统中高级语言的仿真速度的装置和方法
US7934209B2 (en) Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan
Zaddach et al. Embedded devices security and firmware reverse engineering
CN101627364A (zh) 用于标识随遵循设备分发的硬件和软件许可证的数据结构
CN101821727A (zh) 管理更新以创建虚拟机复制品
CN103493011A (zh) 与库操作系统的应用兼容性
CN102521081A (zh) 修复遭破坏的软件
US10607003B2 (en) Mitigation of code reuse attacks by restricted indirect branch instruction
WO2016048724A1 (en) Memory write management in a computer system
US20150120801A1 (en) Analytics data collection with low integration cost for dynamic message passing systems
US20220107827A1 (en) Applying security mitigation measures for stack corruption exploitation in intermediate code files
CN102203757B (zh) 用于冻结对象的类型描述符管理
CN104978204A (zh) 基于移动终端的应用安装更新方法及装置
CN108694052B (zh) 一种固件升级方法、固件升级装置及固件升级系统
CN1815483B (zh) 一种计算机实现的方法和装置
CN102859512A (zh) 可远程处理的项目
CN102612683A (zh) 跨执行环境保持数据完整性
US20170060672A1 (en) Electronic component having redundant product data stored externally
CN111538993A (zh) 一种引入外置式硬件信任根进行可信度量的装置与方法
US20100106902A1 (en) Electronic Data Reproduction
US20050005087A1 (en) System and method for memory management
CN111124416B (zh) 向内联汇编传递参数的方法、装置、设备以及存储介质
US20080141291A1 (en) Reserved write positions on install media

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090916