CN101154187A - 用于为程序打补丁的方法、产品、服务处理器和系统 - Google Patents

用于为程序打补丁的方法、产品、服务处理器和系统 Download PDF

Info

Publication number
CN101154187A
CN101154187A CNA2007101929922A CN200710192992A CN101154187A CN 101154187 A CN101154187 A CN 101154187A CN A2007101929922 A CNA2007101929922 A CN A2007101929922A CN 200710192992 A CN200710192992 A CN 200710192992A CN 101154187 A CN101154187 A CN 101154187A
Authority
CN
China
Prior art keywords
patch
program
memory
service processor
volatile memory
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
CNA2007101929922A
Other languages
English (en)
Other versions
CN101154187B (zh
Inventor
D·德拉姆
H·科斯拉维
T·施鲁斯勒
R·萨希塔
U·萨瓦冈卡尔
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN101154187A publication Critical patent/CN101154187A/zh
Application granted granted Critical
Publication of CN101154187B publication Critical patent/CN101154187B/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

实现加载到易失性存储器中的程序的存储器内打补丁的方法和装置。服务处理器识别要打补丁的程序以及用于程序的相关补丁程序。将补丁程序加载到存储器中,包括对补丁程序应用重新定位修正。服务处理器将程序引导到补丁程序以代替需要打补丁的程序的片段。该程序执行补丁程序同时保持程序状态,并且不中止程序的执行。

Description

用于为程序打补丁的方法、产品、服务处理器和系统
技术领域
本发明的实施例涉及数字安全,并且更具体的涉及对易失性存储器中的程序进行内嵌式打补丁(patching a program inline)。
背景技术
计算机系统执行的代码可能含有容易受到攻击的弱点。例如,恶意软件(malware)的普通攻击向量是执行使缓冲器溢出的脚本。为了减少对攻击的敏感度,软件和/或固件开发商实现了用于程序的代码补丁程序。对程序打补丁传统地包括在与该程序有关的固定的或者可移动的存储器上更新一个或多个文件,其次再将程序装载到存储器中以执行已打补丁的程序。可以经过系统重新启动或者重置来完成程序的重新加载,或者有时经过简单的程序自我卸载并且重新加载已感染的程序。在任何一个情况下,程序都经历了“停机(down)”的时间,其间通常必须中止程序的执行。
为程序打补丁的常规方法包括加载补丁程序,该补丁程序在允许主机操作系统执行被打补丁的程序之前在磁盘上对代码映像(code image)打补丁,这就是为什么常规上程序执行会被中止。另外,因为在该主机上执行打补丁应用程序,常规的打补丁方法取决于主机操作系统。这样,传统上必须为不同的操作系统来开发不同的补丁程序。
针对安全漏洞,尤其是关键的安全漏洞来为程序打补丁已经成为为人所认可的麻烦,其中关键的安全漏洞可以使,例如,破坏性的自我繁殖的网络蠕虫能够进行传播。然而,重新启动系统或中止并且重新加载程序不会提供高可用性的服务器,其中任何的停机时间或者不可用性都是不受欢迎的。系统的不可用性是成本极高的,即使仅仅是短时期的不可用。
附图说明
以下描述包括了对各种附图的讨论,其中已经通过作为发明实施例实现的例子给出了对附图的说明。应该作为例子来对附图进行了解,而不是作为限制。
图1是具有服务处理器的系统实施例的框图,其中服务处理器拥有补丁程序代理(patch agent)。
图2是具有服务处理器的系统实施例的框图,其中该服务处理器从补丁程序源接收补丁程序。
图3是具有补丁程序代理的服务处理器实施例的框图。
图4是在存储器中用于程序内嵌式打补丁处理的实施例的流程图。
图5是服务处理器实施例的框图,其中该服务处理器对程序应用代码补丁程序。
具体实施方式
如同在这里所使用的,参考一个或多个“实施例“将被理解为对包括在发明的至少一个实现中具体的特征,结构,特性的描述。短语例如“在一个实施例中”或者在这里出现的“在可选实施例中”描述了发明各种各样的实施例以及实现,并且未必是所有的都参考相同的实施例。然而,他们也不一定都是互斥的。之后为发明某些细节和实现的描述,具有实施例的概要描述之后,后面是参考附图更详细的说明。
服务处理器能够提供主机上程序的安全运行时间存储器内的修补(secure runtime in-memory patching)。该服务处理器可以是平台(硬件和/或软件)的隔离的部分。该隔离部分是一执行环境,其安全地与主处理器和操作系统(例如,内嵌的服务微处理器,虚拟分区,California Santa Clara英特尔公司的主动管理技术ACTIVEMANAGEMENT TECHNOLOGY,(AMT)相隔开。该存储器内运行时间修补(in-memory runtime patching)允许程序不间断地执行。该服务处理器对程序的存储器内映像打补丁,而不是,或者结合,在磁盘上对程序映像打补丁并且重新加载程序。因为该服务处理器是,或者属于,隔离的部分,所以可以独立于该主处理器或者主机操作系统(OS)来打补丁。
在一个实施例中,用于在存储器中对服务处理器打补丁的一般过程如下。该服务处理器接收补丁程序并且将该补丁程序放在存储器中,或者接收由补丁程序源放在存储器中的补丁程序的指示。服务处理器在补丁程序上执行重新定位修正以与存储器位置相符,其中该存储器位置在补丁程序中指示了与需要打补丁的程序相关的存储器位置。该服务处理器引导存储器内程序到存储器内补丁程序,该存储器内补丁程序允给在不中止程序运行的情况下应用补丁程序。可以通过,例如,存储器内指令替换和/或符号表修改来完成引导程序到补丁程序。在一个实施例中,服务处理器在存储器内程序中修改该补丁程序(例如,当应用重新定位修正)以包括从补丁程序到“好”代码的跳转指令或者控制流程回转(即,在所替换的“坏”代码之后的指令序列)。在备选实施例中,该补丁程序可以是以对程序的存储器位置的认识来进行编译的,并且不需要补丁程序的修正。通常,补丁程序的修正以及从补丁程序回到程序代码的跳转指令的增加是在引导程序到补丁程序之前执行的。这样,当应用补丁程序的时候该程序可以继续执行。应用补丁程序而不中断要打补丁的程序的执行,这种能力是特别有用的,例如,对于重要应用以及服务器平台来说。
服务处理器能访问主机存储器(即,主存储器,或者包括了虚拟交换页的易失性存储器),并且更具体地能访问从主机储器执行的程序的主机软件映像。在主存储器中执行的程序通常具有相关的映像(image),其常以持久状态驻留在磁盘上,典型地在主系统的非易失性存储装置中。从主存储器当中通过主处理器对程序进行执行。在一个实施例中,主系统支持虚拟存储器。当支持虚拟存储器的时候,主存储器包括本质上易失的存储器(例如,随机存取存储器),以及一个或多个存储器的片段或者文件,其通过存储交换(memoryswapping)的使用来作为易失性存储器进行管理。
服务处理器可执行所有程序的修补,或者在一个实施例中,该服务处理器提供服务以使可执行的补丁程序能够被应用于存储器内,尽管该可执行的补丁程序将补丁程序应用到程序的存储映像(in-storage image)上。在一个实施例中,该补丁程序调用该服务处理器(例如,通过发送请求或者命令)以指示对已识别的程序应用补丁程序。在一个实施例中,将补丁程序和程序指示符传送到服务处理器,然后该服务处理器在没有可执行的补丁程序的情况下应用该补丁程序。在这样的实例中,服务处理器对存储器内(in-memory)程序和程序的存储映像(in-storage images)打补丁。
在一个实施例中,响应于接收应该将补丁程序应用于已识别程序的指示,服务处理器对主存储器进行扫描搜索没有打补丁的程序映像的识别标志。另外,管理指令可以启动服务处理器进行扫描。在一个实施例中,可打补丁的程序,或者代理,向服务处理器进行注册以向该服务处理器提供代理的磁盘上和存储器中的位置。当定位了已识别的程序时,服务处理器可以检查该程序映像以确定是否对已经识别以进行补救的部分打了补丁。例如,服务处理器可接收所关心的程序的指示,补丁程序,和检验值以对受影响部分进行比较。服务处理器对加载到存储器中程序映像的所识别部分进行更新。存储器中所识别部分的更新对程序打补丁而不需要停止该程序的执行。
除打补丁之外,服务处理器可以连同病毒扫描器或者其它的补救工具一起进行操作以确定什么时候对程序打补丁。例如,病毒扫描器可以检测程序中恶意软件的识别标志(signature)。可以将任何的在存储器之内发现的恶意软件识别标志向服务处理器指明,该服务处理器能因此使用该受侵害的程序的内嵌式补救来除去病毒。传统的病毒扫描器识别恶意软件,但是没有关于该被感染程序的知识。可以使服务处理器扫描存储器和/或连同病毒扫描器一起进行操作,并且将被感染的程序还原到没有被感染的映像状态。因而可以对程序进行补救而无需停机时间。可选地,或者此外,服务处理器可以将识别标志报告给远程管理员。
如上所述,程序可以在存储器中内嵌式地打补丁。与先前补丁程序动态链接库(DLL)的方法相反,不是仅仅修改程序中函数调用的地址,该服务处理器可以影响实际代码以应用代码补丁程序。除代码之外,在一个实施例中,与代码的打补丁相类似,程序具有同样可以打补丁的可定位数据(例如,可以向服务处理器进行注册,并且具有可识别地址的数据)。
图1是具有服务处理器的系统实施例的框图,其中服务处理器拥有补丁程序代理(patch agent)。受管理主机108代表了执行程序的电子系统。受管理主机108可能是,例如,台式计算机,便携式计算机,个人数字助理(PDA)或者其它手持计算或者通信装置,服务器,等等。受管理主机108包括主处理器110,其代表了处理器,微控制器,中央处理单元(CPU),等等。虽然在图1中显示为单个单元,但是主处理器110应该被理解为可能包括一个或多个处理核心或者处理部件,并且可能包括并行处理能力。
受管理主机108包括易失性存储器130,其可存储/提供用于由主处理器110执行的指令和/或数据。易失性存储器130包括随机存取存储器(RAM),例如,静态随机存取存储器(SRAM),动态随机存取存储器(DRAM),同步DRAM(SDRAM),双数据率RAM(DDRRAM),等等。易失性存储器130包括存储控制器,该存储控制器包括用于管理存储在易失性存储器130中数据的硬件和/或软件。因为当切断存储控制器的电源时存储在易失性存储器130中的数据变得不可用,所以易失性存储器130是易失的。在一个实施例中,易失性存储器130包括硬盘或者闪速存储器的一部分或者片段,该硬盘或者闪速存储器通常被认为是非易失的。然而,可将非易失性存储器用作用于虚拟存储器用途的存储交换文件,并且存储在该交换文件中的数据是通过该存储控制器来进行管理的。可以认为在这里使用的存储交换文件是易失的,因为存储在该文件上的数据是可“被删除”和/或在切断存储控制器电源的时候被存储控制器认为是无效的。这样,对于将存储器用于虚拟存储器目的来说,所使用的存储器片段可以被认为是易失性的存储器。
受管理主机108还包括存储器140,其代表存储了稳定数据的非易失性存储器。非易失性存储器指的是即使对该存储器断电时还能够保持其值的存储器介质。持久数据(Persistent data)指代当受管理主机108电源切断的时候希望被保持的数据,例如,系统文件,操作系统,程序文件,配置文件,等等。存储器140可以包括磁盘和相关的驱动器(例如,磁的,光的),通用串行总线(USB)存储装置以及相关的端口,闪速存储器,只读存储器(ROM),非易失半导体驱动器,等等。在一个实施例中,存储器140包括交换文件142,如上所述,其代表了虚拟内存分区,或者用于虚拟内存目的的存储器的片段。从用户或者加载到存储器中的主机代理的角度来看,该用户或者代理对于加载到易失性存储器内的程序的页和那些临时保存在交换文件142中的页之间不进行区分,其中该易失性存储器实际上存在于易失性存储器130中。
存储器140包括主机软件代理102,其代表了软件程序的映像。将主机软件代理102作为主机软件代理104(所加载的存储器中的软件代理的映像)加载到易失性存储器130中。注意如上述,主机软件代理104的有一些或者所有的页可能物理地位于易失性存储器130中,或者交换文件142中,其中通过易失性存储器130的存储控制器将该交换文件142作为易失性存储器进行管理。注意仍可以将该程序的页面作为主机软件代理102存储在存储器中。例如,关于采用了请求式页面调度(paging)的实现,通常不将代码放入易失性存储器中,直到需要对其进行执行的时候。另外,当页面分配完的时候软件代理页可能不处于交换文件142中,除非该页是标记为脏的(即,它已经被修改过了)。在这样的实例中,当页标记为不存在并且后来对其进行请求的时候,通常再将其从存储器140中的主机软件代理102映像重新装入。
由主处理器110来执行所加载的软件代理(software agent)104。这样,主处理器110显示为具有代理执行(exec)线程106。代理执行线程(agent execution thread)106代表部分或者全部主机软件代理102(存储在存储器140中)的执行映像并且作为在易失性存储器130中的主机软件代理104进行加载。可能有任意数量的代理在主处理器100上执行(在受管理主机108内的处理器和/或其它资源(例如,存储器,网络带宽)的能力之内)。主机软件代理可以是任何类型的软件程序,内核,可执行线程,等等。例如,主机软件代理102可以是防病毒软件,入侵检测系统(IDS),防火墙,OS可执行码,数据,或不会变化的功能指针,等等。
错误可以并且的确存在于用于软件程序的代码中,同时软件程序在这里也称为软件代理。当检出错误的时候,该错误可以通过提供用于软件代理的补丁程序来进行处理。补丁程序涉及新的指令,例程,或补丁程序所应用的软件代理的其它片段。补丁程序也可以作为全部新的二进制和/或支持文件来实现;然而,在二进制中的核心变化可以被理解为如上述的新的指令或例程。将要使用该补丁程序用于替换所关心的软件代理的一部分。补丁程序通常是通过在具有补丁程序或安装该补丁程序的可执行程序的系统上展开补丁程序来应用的,或者改变在存储器中的软件代理代码。如同在这里描述的,补丁程序132代表用于在存储器130中加载的主机软件代理104的补丁程序。与传统方法相反,补丁程序132处于存储器中,并且尽管主机软件代理104仍在存储器中也对其打了补丁,而没有中止主机软件代理104。另外,该补丁程序可应用于存储器140的主机软件代理映像102,但是不必将打补丁的主机软件代理102重新加载到存储器130中以在修补状态中继续执行主机软件代理104。
受管理主机108包括服务处理器(service processor)120,其表示硬件和/或软件,该硬件和/或软件提供了对独立于主处理器110的受管理主机108的管理。如上所述,服务处理器120是隔离的部分,以提供执行环境,该执行环境与主处理器和在该主处理器上执行的操作系统可靠地隔离开。例如,服务处理器120可以是微处理器和/或内嵌在受管理主机120的硬件平台(例如,主板)上的其它电路。服务处理器120可以提供监视服务以检测受管理主机108的病毒或其它的恶意软件,或黑客破坏。服务处理器120包括补丁程序代理(patch agent)122,其表示为为受管理主机108提供存储器内打补丁的硬件和/或软件。如上所述,存储器内打补丁可包括将补丁程序132放置在存储器中,并且在不中断主机软件代理104执行的情况下引导易失性存储器130的主机软件代理104到补丁程序132。
服务处理器120也可以将主机软件代理104和/或在易失性存储器130中加载的其它程序进行注册。对主机软件代理104进行注册包括使用程序标识符对主机软件代理104进行识别。除该程序标识符之外,服务处理器120通常将其它关于所注册的代理的信息,例如,存储器位置,程序散列(hashes),或可以验证易失性存储器130中程序的同一性和/或完整性的其它信息进行存储。在一个主机软件代理104向服务处理器120进行注册的实施例中,服务处理器120可针对期望行为对主机软件代理104进行监测,并且可主动地对代理进行错误扫描。另外,服务处理器120可以主动地在网络上扫描管理或服务的位置以“监视”对于主机软件代理104来说变得可用的补丁程序或更新。换句话说,服务处理器120可以接收请求以对主机软件代理104打补丁,和/或与易失性存储器130的周期性扫描一起来检测主机软件代理104中的错误。
在一个实施例中,服务处理器120具有经由网络150的安全网络连接。网络150代表任何类型的具有相关硬件和软件元件的网络。网络150可以包括一个或多个局域网(LAN),无线局域网(WLAN),广域网(WAN),城域网(MAN),例如因特网的全球区域网络(GAN),或其任意组合。连接硬件可包括5-类或其它双绞线电缆,同轴电缆,无线通信收发器,等等,以及流向硬件(例如,接口电路/卡,开关,路由器,服务器)。在一个实施例中,受管理主机108连接到网络150(未显示连接),并且服务处理器120具有到网络150的连接,其中该网络150对于主处理器110以及在主处理器110上执行的任何操作系统而言为带外连接(out-of-band)。带外连接是一种对于在主处理器110上执行的软件是不可访问的和/或不可见的连接。
在一个实施例中,网络150耦合到补救实体(remediation entity)160,其代表系统100的管理实体(例如,管理服务器或工作站)。补救实体160可在网络150上执行或另外地管理网络安全策略,尤其是关于受管理主机108的策略。在一个实施例中,补救实体160代表管理实体,并且服务处理器120向补救实体160报告打补丁过程。服务处理器120可报告所有的补丁程序,或者,可仅仅报告应用补丁程序不成功的尝试(即,有些补丁程序可能不成功)。服务处理器120也可指出在主机软件代理104中所找到的恶意软件的识别标志。也可将其它的信息传递到补救实体160。
在一个实施例中,服务处理器120向补丁程序132提供重新定位修正。重新定位修正是指示出在存储器中真实位置的偏移量,其中在那里可以在存储器中创建函数调用或其它例程调用或程序调用。例如,通常将主机软件代理102的可执行码与为缺省的存储器位置而设的缺省值一起写入以从动态链接库(DLL)找到调用函数。在操作中,在动态链接库函数调用的存储器中的真实位置很可能是除了在可执行码存储器所指示的该缺省位置之外的某个地方。这样,当将主机软件代理映像104通过存储器管理的加载器加载到易失性存储器130中的时候,该加载器提供重新定位修正值以使主机软件代理104能够进行函数调用。类似的,服务处理器120对补丁程序132应用重新定位修正以使补丁程序132在易失性存储器130中能够是可执行的。可将具有缺省存储器位置的补丁程序132的映像存储在存储器140中,其中如果重新将程序加载到易失性存储器130中那么通过加载器将该存储器140自动地进行修正。
作为具有补丁程序代理122的服务处理器120运行实施例一个例子,考虑软件蠕虫的情况。蠕虫对系统的影响典型地应归因于缓冲器溢出。由于在程序中动态数据结构上不正确的界限检查,发生了缓冲器的溢出。可以通过在独立的存储器区域中提供界限检查,重定向具有不正确的二进制映象(即,没有提供恰当的界限检查)的程序部分到增加的界限检查,并且然后引导控制流回到源程序,来修正缓冲器溢出或相似的薄弱点。设想主机软件代理104包括不正确的界限检查(improper bounds check)。服务处理器120加载具有恰当界限检查的补丁程序132到易失性存储器130中,并且将主机软件代理104的控制流从不正确的界限检查重定向到补丁程序132。然后主机软件代理104的旧的,易损坏的机器代码跳转到或者调用在补丁程序132中正确的映像,其中补丁程序132包括了对于动态数据结构恰当的界限检查。通过服务处理器120将跳转调用或控制流转移指令插入到易失性存储器130中程序旧的二进制映象中,并且跳转到执行界限检查的新的指令集来实现内嵌式打补丁。由服务处理器120插入的在补丁程序132中新的代码段,在程序可以恢复其正常指令序列的执行点,返回到主机软件代理104。尽管受管理主机108以及主机软件代理104是运转着的,服务处理器120能够彻底地以内嵌方式对主机软件代理104打补丁。
尽管内嵌式打补丁提供了完全的修补,在其它情况下内嵌式打补丁可能是不够的。设想对于主机软件代理104的补丁程序132包括实质上不同的代码(例如,加密/解密算法的修改)。在这样的情况下,需要替换主机软件代理104的全部函数或部分原始代码。
在这样的情况下,服务处理器120可经由网络150(例如,从补救实体160)接收补丁程序132。如果主机软件代理104注册有服务处理器120的补丁程序代理122,那么补丁程序代理122可以打补丁。否则,服务处理器120可执行易失性存储器130的存储器扫描以找到主机软件代理104的代码段,其中该代码段与将要由补丁程序132打补丁的代码的具体识别标志相匹配。一旦服务处理器120定位了要打补丁的主机代理代码,可通过复制新的代码段(即,补丁程序132)到易失性存储器130,并且将主机软件代理104的初始主机代码中适当的符号改变为指向补丁程序132新的代码段,来在存储器中直接应用该补丁程序。在一个实施例中,可以通过网络150,例如,从补救实体160或另一个远程的管理控制台(没有显示),来启动整个打补丁处理。
例如,如果主机软件代理104包括通过在主机代码中的符号_PRINT_所表示的命名函数(named function)printk(),那么函数printk()将在易失性存储器130的符号表中被指示出来。命名函数指的是通过符号进行引用的函数。假设补丁程序132包括准备替换printk()的新的函数printk_new()。补丁程序代理122可以通过加载补丁程序132到易失性存储器130而不覆盖早先的代码(即,printk())来应用该补丁程序。补丁程序代理122然后将在原有主机代码中所有的引用改变为指向相应于printk_new()的代码。因为加载该新的代码并且重定向该旧的代码到新函数的处理没有覆盖原有的代码,所以尽管在易失性存储器130中打了补丁,仍允许主机软件代理104执行。注意补丁程序132又可以包括对原有代码的代码部分/数据区块的引用(例如,引用全局变量)。在这样的情况下,补丁程序代理122修正或重新定位这样的引用以匹配加载到易失性存储器130中的当前版本。
在一个或多个指令内嵌式替换的情况下,或在替换函数的情况下,服务处理器120将补丁程序应用于程序。在这里所要替换的指令或函数可以称为服务处理器所识别并且打补丁的程序的“项”(item)或程序的“片段”(segment)。在这里项也可指的是可定位数据的元素,其中该可定位数据可如同在这里所描述地打补丁。注意在某些实现中,项(item)需要足够小以包括在存储器的单个页中,虽然在其它实现中项将要覆盖多个存储页面。
如上所述,主机代理程序(host agent program)可以向服务处理器120进行注册。在一个实施例中,主机代理程序将向服务处理器120提供线索(hints),例如在易失性存储器130中某些符号的位置,作为主机代理程序部分的,或共同的注册。可将符号位置用于修补那些符号。在另一个实施例中,存储器管理的加载器可以加载主机代理程序代码并且在加载到易失性存储器130中的主机代理程序代码每个页的末端留下多余的存储空间,其可用于加载补丁程序代码。或者,生成该补丁程序的人或实体可以在该补丁程序中包含足够的信息,使服务处理器120能够在存储器中未打补丁版本位置的基础上,确定需要根据补丁程序代码进行执行的修正/重新定位。
如上所述,在某些实施例中,支持虚拟内存,并且使用交换文件142作为存储器交换片段。在可以将程序页过渡地存储在存储器140中而不是在易失性存储器130中的这样的实施例里,服务处理器120可执行作为补丁程序一部分的其它操作。为了执行内嵌式打补丁,如上所述,服务处理器120首先确保在打补丁之前程序代码在易失性存储器130中。服务处理器120可以确保将该程序代码加载到易失性存储器130中一个方法是,内核驻留代理(没有显示)从服务处理器120接收页面调入(page-in)请求。该内核驻留代理能因此产生页面错误并且随后阻止在存储器中的代码页直到服务处理器120完成其打补丁操作。
图2是具有服务处理器的系统实施例的框图,其中该服务处理器从补丁程序源接收补丁程序。受管理主机200代表在其上对程序打补丁的系统或主机,并且可以是受管理主机108的例子,或任何其它的在这里描述的系统的实施例。受管理主机200可以是,例如,个人电脑,手持计算机,服务器,游戏系统,机顶盒,等等。受管理主机200包括一个或多个处理器210,以及耦合于处理器210的内存220。处理器210可包括任何类型的微处理器,中央处理单元(CPU),处理核,等等,以执行与信息认证相关的操作以及数据存取请求的服务。处理器210控制受管理主机200总体操作,并且可能是,或可包括,一个或多个可编程通用或专用微处理器,数字信号处理器(DSP),可编程控制器,特定用途集成电路(ASIC),可编程逻辑电路设备(PLD),等等,或这样的设备的组合。处理器210可包括多核和/或多处理器设备。
内存220表示受管理主机200的主存储器以提供由处理器210执行的代码或数据。如上所述,内存220是易失性存储器的例子。内存220可包括一种或多种随机存取存储器(RAM),例如,静态随机存取存储器(SRAM),动态随机存取存储器(DRAM),同步DRAM(SDRAM),双数据率RAM(DDR-RAM),等等,或是存储器技术的组合。在一个实施例中,管理内存220的存储控制器也能访问部分作为易失性存储器进行管理的磁盘或闪存。这样,易失性存储器包括虚拟内存的交换文件。
处理器210和内存220与总线系统202相耦合。总线系统202是一种概括,其表示任意一个或多个独立物理总线,通信线路/接口,和/或多点下传或点对点连接,通过适当的网桥,适配器,和/或控制器进行连接。因此,总线系统202可包括,例如,一个或多个系统总线,周边元件互连(PCI)总线,超传输(HyperTransport)或工业标准结构(ISA)总线,小型计算机系统接口(SCSI)总线,通用串行总线(USB),或电气和电子工程师协会(IEEE)标准1394-1995总线,其公布于1996年8月30日,并且通常称为“火线(Firewire)”。
一个或多个网络接口240,一个或多个输入/输出(I/O)接口250,以及一个或多个内部存储器装置260也都通过总线系统202与处理器210相耦合。网络接口240能够使受管理主机200和远程设备(例如,服务器)经过网络进行通信。网络接口240可包括,或可能是,例如,以太网卡。另外,受管理主机200通常包括I/O接口250以用于来自人类用户的可访问性。I/O接口250可包括视频,音频,和/或字母数字接口。
存储器260可以是或包括任何用于以非易失或稳定的方式(即,即使中止受管理主机200的电源还能维持其值)来存储数据的常规介质。存储器260包括代码和/或数据262,其可被访问并且放在内存220中用于通过处理器210执行。存储器260包括加载到内存220中要被执行的主机代理264。
受管理主机200包括服务处理器230,其提供了尽管将主机代理264加载在内存220中也能够对其打补丁的能力。如上所述,服务处理器230可以提供内嵌式指令替换(inline instruction replacement)和/或符号修改。
受管理主机200耦合于补丁程序源270。补丁程序源270可在受管理主机200的内部或外部。在补丁程序源270在内部的实施例中,补丁程序源270与总线202相耦合。在补丁程序源270在外部的实施例中,补丁程序源270与网络接口240相耦合。补丁程序源270可以与对于在处理器210上执行的软件来说是可访问的网络接口240上的连接相耦合,和/或补丁程序源可以与仅仅对于服务处理器230是可访问的在网络接口240上的连接相耦合。补丁程序源270可能是,例如,服务处理器230或在受管理主机200上的其它硬件,虚拟机部分,虚拟机管理器,或在处理器210上执行的软件,或者补丁程序源270可能是远程的管理员,策略实施点(policyenforcement point),更新网址,等等。补丁程序源270提供了在主机代理已加载在内存220中时被应用于主机代理264的补丁程序272。
图3是具有补丁程序代理的服务处理器实施例的框图。在服务处理器300中表示的每一个元件都是可以用硬件,软件,或者其组合来实现的装置。服务处理器300包括控制逻辑302,其实现逻辑功能控制以控制服务处理器300的操作,和/或与控制服务处理器300的操作有关的硬件。逻辑可能是硬件逻辑电路和/或软件例程。该逻辑可能是在计算装置的处理器上执行的指令。在一个实施例中,服务处理器300包括一个或多个应用程序304,其代表向控制逻辑302提供指令的代码序列和/或程序。
服务处理器300包括内存306,和/或用于存储数据和/或指令的对于内存资源306的存取。内存306可与常驻有服务处理器300的受管理主机系统的主存储器分离。这样,内存306可包括局限于服务处理器300的存储器,以及,或者,包括常驻有服务处理器300的系统的存储器。服务处理器300可使用内存306,例如,为了注册的软件代理保存注册信息。服务处理器300也包括一个或多个接口308,其表示与在服务处理器300以外的实体(电子或者人)有关的、往来于(输入/输出接口)服务处理器300的存取接口。接口308包括一种机构,通过该机构可以将服务处理器300合并到主机系统中。在一个实施例中,服务处理器300也包括存储器309,其表示局限于(local to)服务处理器300的存储器。服务处理器300可使用存储器309来存储,例如,用于程序的检查值,密钥,用于注册的软件代理的注册信息,等等。
服务处理器300包括补丁程序代理310,其表示一个或多个能使服务处理器300提供存储器内打补丁的功能元件。该元件的功能或者特性包括一个或多个装置,或者由其来提供,其中这些装置包括接收器320,注册模块330,和补丁程序应用模块340。每一个模块可进一步包括其它的模块以提供具体的功能。作为在这里所使用的,模块指代无论是在计算机硬件,软件,或者某些组合中实现的例程,子系统,等等。可以将一个或多个模块作为硬件来实现,同时其它的以软件来实现。
注意服务处理器300可以是或者可以不是单个元件。在一个实施例中,服务处理器300表示多个互相结合以提供存储器内打补丁(in-memory patching)的模块或者实体。在一个实施例中,服务处理器300表示一个或多个安全或者平台管理实体的子部件。
接收器320使补丁程序代理310能够获得补丁程序以将其应用于加载到系统主存储器中的程序。在一个实施例中,接收器320包括接收补丁程序请求的请求处理模块322。通常从补丁程序源接收该请求。可选地,补丁程序代理310可以自动启动对加载在存储器中的程序打补丁。接收器320包括补丁程序存取模块324,其提供了获得该补丁程序信息的能力。可以经过网络接收该补丁程序信息,或者将其放置在系统主存储器或者独立的存储器中,其中这些存储器对于补丁程序代理310来说可以经由补丁程序存取模块324来进行访问。
注册模块330使补丁程序代理310能够对加载在系统主存储器中的程序进行注册。注册的程序可以提供关于该程序和其修正(fix-up)的存储器位置信息。由于具有注册的程序,当接收补丁程序的时候补丁程序代理310可以具有关于在存储器中程序位置的信息。如果程序没有注册,补丁程序代理310可以调用内存扫描器332以确定程序在存储器中的位置以及程序显著(salient)部分(即,要打补丁的部分)。在一个实施例中,内存扫描器332包括周期函数以对存储器进行扫描并且确定是否有一个或多个程序具有病毒并且要求打补丁。还可由不同的模块提供用于不同目的的不同类型的存储器扫描。
补丁程序应用模块340使补丁程序代理310能够将补丁程序应用到存储器内程序。可以内嵌式地应用该补丁程序,或者通过符号替换应用该补丁程序,两者都在上面讨论过了。在一个实施例中,所加载程序的一个或多个页位于虚拟内存交换文件中,并且应该对其进行加载以完成打补丁。加载页面模块342使补丁程序应用模块340能够加载一个或多个页面,其中在该页面上应该执行补丁程序应用操作。在一个实施例中,加载页面模块342包括将存储器分配到程序的虚拟内存空间中的内核驻留元件。可选地,补丁程序应用模块340也将对程序的页面表/页面目录打补丁。符号校准模块344使补丁程序应用模块340能够在程序上执行符号修改,其中该程序不能用内嵌式的替换来打补丁。例如,需要替换整体函数,或者大部分的函数。可以通过用符号替换替代整个函数来避免内嵌式替换大量代码的处理周期以及时间方面的成本。
在一个实施例中,补丁程序应用模块340包括在打补丁期间提供代码锁定的锁定模块346。这样的代码锁定可以临时地使得一部分代码不可用;然而,不认为这样的锁定是程序执行的中断。这样的锁定可以在若干执行时钟周期中使部分代码不可用,而不是若干秒或者更长,如同一般的由从存储器重新加载程序到系统主存储器中所引起的一样。同样,与停止并且从存储器中重新加载程序的情况相对比,这样的锁定仅仅在短期间内锁定了例程或者部分代码,并且没有阻止程序其它部分的执行。提供这样锁定的一个方法是将页标记为不存在。锁定模块346可以直接写入到程序的页面表条目中,并在所关心的页面表中设定“不存在”位。或者,锁定模块346可以向存储器管理提供指令使其认为该页在存储器中不存在。在页面标记为不存在时,可对页面进行改变,然后在进行改变之后将其标记为存在。在有些情况下,当以“不存在”和“存在”的页面标记进行锁定的时候,可能需要对位于处理器上的翻译后备缓冲器(TLB)进行刷新(flush)。注意在一个实施例中,进行打补丁的项目(item)可包括在可以标记为不存在的页面之内。可选的,要打补丁的项目可以不能被包括在单一页面中,并且可采用其它的锁定方法(例如,信号量,semaphores)。
在一个实施例中,补丁程序应用模块340包括数据定位器348,其提供了确定可定位数据位置的能力。如同先前所描述的,尽管通常在代码上打补丁,但是如同在这里所描述的数据还可以是存储器内打补丁的对象。有些数据能够经过数据定位器348向服务处理器300进行注册。因而,尽管数据在存储器中通常是不可定位(notlocatable)的,但是注册的数据可具有为服务处理器300所知的位置和大小。数据定位器348能因此发现在存储器中的数据并且替换部分或者全部的数据字节。
代理或者模块的描述描述了可能包括计算机硬件,软件,和/或其组合的组件。在执行此处所描述操作的元件的实例中,该元件包括软件,软件数据,指令,和/或通过由机器/电子器件/硬件制造的产品所提供的结构。一种产品(article of manufacture)可能包括具有内容以提供指令,数据,等等的机器可读介质。该内容可以使这里描述的电子器件实现所描述的各种操作或者执行。机器可读介质包括任何的通过机器(例如,计算装置,电子器件,电子系统/子系统,等等)以可访问的形式提供(即,存储和/或传输)信息/内容的机构。例如,机器可读介质包括可记录/不可记录介质(例如,只读存储器(ROM),随机存取存储器(RAM),磁盘存储器介质,光存储器介质,闪速存储器设备,等等)。机器可读介质可能进一步包括,具有代码的电子器件,该代码加载在存储器上可在该电子器件在运行中的时候进行执行。因而,提供这样的有代码电子器件可被理解为提供具有在此处所描述的内容的产品。此外,在数据库或者其它的存储器位置上存储代码并且用于经过通信介质进行下载来提供代码可被理解为提供具有与在此处所描述的内容的产品。
图4是用于存储器中程序的内嵌式打补丁过程实施例的流程图。此处所示的流程图提供了各种操作序列的例子。尽管以具体的序列或者顺序进行显示,除非另作说明,该操作的顺序是可以修改的。因而,所说明的实现应该仅仅被理解为例子,并且操作可以以不同的顺序进行执行,并且有些操作可并行进行执行。此外,在发明不同的实施例中可以省去一个或多个操作;因而,在每个实现中不是所有的操作都是必需的。
主机代理(host agent,HA)可选择地向服务处理器和/或它的补丁程序代理进行注册,402。不需要对所有通过补丁程序代理进行修补的HA进行注册。服务处理器补丁程序代理接收请求以将补丁程序应用到HA,404。该请求可以是来自网络位置(例如,图1的补救实体160),或者来自具有要打补丁的HA的受管理主机上的位置。除了引导请求以对所识别的主机代理应用补丁程序之外,服务处理器接收请求可以包括接收表示HA可获得补丁程序的指示。在没有接收到识别主机代理的引导请求的情况下,服务处理器补丁程序代理识别要打补丁的HA。除了接收引导请求(direct request)或者有效请求的指示之外,服务处理器可以例如,通过主机主存储器的扫描确定要打补丁的HA。服务处理器同样可以,例如,从病毒扫描器那里接收应该对HA打补丁的指示。因而,接收请求可以指任意数量的方法,在这些方法中服务处理器确定或者接收补丁程序可获得或者应该对主机代理打补丁的指示。
服务处理器通过所接收的指示,或者通过它自己的判定来识别HA。服务处理器确定是否HA已进行注册,406。如果HA没进行注册,410,服务处理器可以扫描主机主存储器以寻找主机代理识别标志,412。在定位所识别的HA之后,通过扫描主机存储器,或者通过查找HA的注册信息,服务处理器确定HA页面是否位于易失性存储器中,414。如上所述,易失性存储器在这里通常可以理解为包括虚拟内存交换文件;然而,确定主机内存页面是否位于易失性存储器中在这里具体地说指的是该页面在主存储器中是否是可访问的并且不在虚拟交换文件中。如果一个或多个页面不在存储器中,420,那么服务处理器促使将页面转移到存储器,422。例如,服务处理器可以引起加载页面到存储器中的页故障。在确定页面在存储器中,或者已转移到存储器中之后,服务处理器为重定位的符号和具体的动态寄存器的使用调整补丁程序,424。
然后在服务处理器修补代理对主机易失性存储器中的HA代码打补丁时,应用调整的补丁程序代码,426。该修补可能是此处所描述的修补中的任何一种。服务处理器能因此继续为打补丁的HA,或者其它HA监测打补丁请求,428。
图5是将代码补丁程序应用于程序的服务处理器实施例的框图。系统500包括加载到易失性存储器中的程序510,以及被接收并且加载到易失性存储器中的补丁程序520。服务处理器530可将补丁程序520加载到易失性存储器中,或者接收表明补丁程序520在存储器中的指示。服务处理器530包括为服务处理器530应用打补丁操作的补丁程序代理532。
程序510包括需要打补丁的程序列表的例子,将在下面更详细地对其进行描述。提供了源程序以及某些汇编语句。特定语言结构的使用仅仅是作为例子并且不具有限制作用;不需要特定的编码语言,并且可以以其它的系统结构实现相似的技术。如此,可以以任何语言产生源代码,并且x86机器代码仅仅是说明性的。源程序(source)举例说明了代码的第8行缺少界限检查。该汇编语句举例说明了可以被用于校正界限检查问题的内嵌式补丁程序。同样以这样的描述来产生代码:
1://example code
2:#include″header.h″
3:
4:int main(int argc,char*argv[]){
6:int i;
7:char charstring[10];//Small buffer
8:for(i=0;argv[0][i]!=NULL;i++){//No bounds checking!
9:charstring[i]=argv[0][i];        //Possible overflow!
Figure A20071019299200251
0040104A jmp(0080104A)              //Inline replacement
0040104D mov eax,dword ptr[edx]
0040104F mov ecx,dword ptr[ebp-4]
00401052 mov edx,dword ptr[ebp-4]
00401055 mov al,byte ptr[eax+edx]
00401058 mov byte ptr[ebp+ecx-10h],al
10:}
11:
12:return 0;
13:}
[PATCH]
9:if(i==10)break;        //Fix overflow
0080104A cmp dword ptr[ebp-4],0Ah
0080104E jne  (00801054)
00801050 jmp  main+4Eh(0040105E)
00801054 mov edx,dword ptr[ebp+0Ch]//Replace removed line
<NEW CODE>                      //Possibly insert new code
00xxxxxx jmp(0040104D)          //Jump/return to program
内嵌式替换设置跳转到补丁程序以代替没有检查界限的有缺陷的代码例程。注意补丁程序520处于存储器中,并且应用了重新定位修正。如此,根据在序列加载到存储器中时所接收的位置,来对指令序列进行重新编号。然而,如上述,可以根据固定地址对补丁程序520进行编译并且如此则不需要应用修正(fix-up)。通过补丁程序代理532删除开始不正确序列的代码行以允许插入转至补丁程序的跳转指令。补丁程序包括示例界限检查修正,并且在插入补丁程序的位置跳转回到程序。注意除界限检查之外,也可将其他的新的代码插入到该补丁程序中。还注意尽管如同所说明的跳转是返回到紧跟在故障代码之后的指令执行,但是跳转可以返回代码中任何其它的位置。如此,例如,如果所有代码是好的并且只需要加入新的代码以对该程序打补丁,补丁程序可以跳转回到正常指令序列。然而,如果某些代码是“坏的”或者应该被跳过,该跳转返回可以是有效避免犯错误代码的指令。在下面提供了用于补丁程序520的源程序和汇编语句。如上述的代码所示,该用于补丁程序520的源程序和汇编语句可被理解为当将其加载到存储器中并进行应用的时候已经被重新定位了。
8:for(i=0;argv[0][i]!=NULL;i++)//No bounds checking!
9:if(i==10)break;                //Fix overflow
0040104A cmp dword ptr[ebp-4],0Ah
0040104E jne  main+42h(00401052)
00401050 jmp  main+56h(00401066)
10:charstring[i]=argv[0][i];     //Overflow corrected
00401052 mov edx,dword ptr[ebp+0Ch]
00401055 mov eax,dword ptr[edx]
00401057 mov ecx,dword ptr[ebp-4]
0040105A mov edx,dword ptr[ebp-4]
0040105D mov al,byte ptr[eax+edx]
00401060 mov byte ptr[ebp+ecx-10h],al
注意因为该补丁程序与源程序是等幂的(idempotent),仅仅利用在另一个存储器区域中预先规定的补丁程序来替代存储器内映像的一个行,在应用该补丁程序的同时该程序可以继续运行。如此,可以应用该补丁程序而不产生停机时间,并且程序执行不会间断。
除了在此所描述的之外,可对所公开的发明的实施例和实现进行不同的修改而不脱离其范围。因此,此处的说明和例子应该视为说明性的,而没有限制的意义。发明的范围应该仅仅参考下述的权利要求进行确定。

Claims (24)

1.一种用于为程序打补丁的方法,包括:
识别加载到存储器中要打补丁的项目,该项目与加载到存储器中的程序有关;
在易失性存储器中存储用于该项目的补丁程序;
引导该程序到补丁程序以使该程序执行该补丁程序,同时维持该程序的状态并且不中止该程序的执行。
2.根据权利要求1所述的方法,其中识别该项目包括:
识别程序代码的片段。
3.根据权利要求1所述的方法,其中识别该项目包括:
识别可定位数据元。
4.根据权利要求1所述的方法,其中将该补丁程序存储在该易失性存储器中进一步包括:
对该补丁程序应用重新定位修正。
5.根据权利要求1所述的方法,其中将该补丁程序存储在该易失性存储器中进一步包括:
修改符号查找表格。
6.根据权利要求1所述的方法,其中引导该程序到该补丁程序进一步包括:
锁定与该程序有关的该项目以阻止对该项目的访问;
当该项目被锁定时引导该程序到该补丁程序;以及
清除在该项目上的锁定条件。
7.根据权利要求6所述的方法,其中锁定该项目包括:
将包括该项目的存储页面标记为在该易失性存储器中不存在;
引导该程序到该补丁程序;以及
在引导该程序到该补丁程序之后将该存储页面标记为存在于该易失性存储器中。
8.根据权利要求1所述的方法,进一步包括:
确定是否将包括该程序的存储页面加载到易失性存储器中;以及
如果不是,则在引导该程序到该补丁程序之前加载该存储页面到易失性存储器中。
9.根据权利要求1所述的方法,其中该项目包括该程序的命名函数,并且其中引导该程序到该补丁程序包括:
将该程序的符号引用从引用该项目替换到引用该补丁程序。
10.根据权利要求1所述的方法,进一步包括:
经过对于在执行该程序的主处理器上执行的软件来说不可访问的网络连接向远程管理员报告为该程序打补丁的结果。
11.一种产品,包括机器可读介质,该机器可读介质具有在其上存储的内容以提供指令来使装置执行操作,所述操作包括:
从补丁程序源接收补丁程序以应用于加载到易失性存储器中的程序;
使用到该补丁程序的跳转内嵌式地替换该程序的指令。
12.根据权利要求11所述的产品,其中从该补丁程序源接收该补丁程序包括:
从平台硬件接收该补丁程序。
13.根据权利要求12所述的产品,其中从平台硬件接收该补丁程序包括:
从服务处理器接收该补丁程序。
14.根据权利要求11所述的产品,其中从该补丁程序源接收该补丁程序包括:
从远程管理控制台接收该补丁程序。
15.根据权利要求11所述的产品,其中从该补丁程序源接收该补丁程序包括:
从在该平台硬件上执行的虚拟机上接收该补丁程序。
16.根据权利要求15所述的产品,其中从该补丁程序源接收该补丁程序包括:
从该程序的运行环境的软件成分中接收该补丁程序。
17.根据权利要求11所述的产品,该内容进一步提供指令用于:
对补丁程序应用修正。
18.一种服务处理器,包括:
接收器,接收要打补丁的程序的指示,识别虚拟内存中要打补丁的程序的片段,并且识别用于该程序片段的补丁程序;
耦合于该接收器的补丁程序应用模块,其对该补丁程序应用重新定位修正,加载该补丁程序到易失性存储器中,并且将该程序引导到代替该程序片段的补丁程序以应用存储器内补丁程序而不需要将该程序重新加载到易失性存储器中。
19.根据权利要求18所述的服务处理器,其中该补丁程序应用模块将该程序引导到该补丁程序包括该补丁程序应用模块进一步:
用转到该补丁程序的控制流转移指令替换该程序片段指令序列中的指令以将该指令序列重定向到该补丁程序;
将所替换的指令复制到该补丁程序中;以及
在该补丁程序指令的结尾插入控制流转移指令以引导该指令序列回到该程序。
20.根据权利要求19所述的服务处理器,其中该补丁程序应用模块在该补丁程序指令的结尾插入控制流转移指令以引导该指令序列回到该程序包括该补丁程序应用模块进一步:
插入该控制流转移指令以引导该指令序列在程序中的一个位置回到该程序,这个位置避免了执行该程序指令序列的一个或多个指令。
21.根据权利要求18所述的服务处理器,进一步包括:
注册模块,在接收要打补丁的程序的指示之前对该程序进行注册。
22.一种系统,包括:
补丁程序代理,其具有接收器以接收要打补丁的程序的指示,识别虚拟内存中要打补丁的程序的片段,并且识别用于该程序片段的补丁程序;注册模块,在接收要打补丁的程序的指示之前对程序进行注册;以及耦合于该接收器的补丁程序应用模块,其对该补丁程序应用重新定位修正,加载该补丁程序到易失性存储器中,并且将该程序引导到代替该程序片段的补丁程序以应用存储器内补丁程序而不需要将该程序重新加载到易失性存储器中;
闪速存储器,其耦合于补丁程序代理以存储用于该程序的注册信息。
23.根据权利要求22所述的系统,该补丁程序代理进一步包括:
存储器扫描器,扫描该程序以查找恶意软件;并且
如果检出恶意软件,则启动补丁程序以避免执行该程序中的恶意软件代码。
24.根据权利要求22所述的系统,其中该接收器接收要打补丁的程序指示包括该接收器接收对于已注册程序来说可获得的更新或者补丁程序的指示。
CN2007101929922A 2006-09-29 2007-09-29 用于为程序打补丁的方法、装置、服务处理器和系统 Expired - Fee Related CN101154187B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/540,373 US8286238B2 (en) 2006-09-29 2006-09-29 Method and apparatus for run-time in-memory patching of code from a service processor
US11/540,373 2006-09-29

Publications (2)

Publication Number Publication Date
CN101154187A true CN101154187A (zh) 2008-04-02
CN101154187B CN101154187B (zh) 2011-04-13

Family

ID=38895794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101929922A Expired - Fee Related CN101154187B (zh) 2006-09-29 2007-09-29 用于为程序打补丁的方法、装置、服务处理器和系统

Country Status (4)

Country Link
US (1) US8286238B2 (zh)
EP (2) EP1909171A1 (zh)
KR (1) KR100965644B1 (zh)
CN (1) CN101154187B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101482834B (zh) * 2009-01-20 2012-02-22 华为技术有限公司 在线补丁激活方法、通信装置及系统
CN101771720B (zh) * 2009-01-07 2013-01-30 上海三零卫士信息安全有限公司 主动管理技术终端的扫描发现方法
CN103197942A (zh) * 2013-03-18 2013-07-10 华为技术有限公司 一种补丁的生成方法、打补丁的方法及装置
CN103345412A (zh) * 2013-07-10 2013-10-09 华为技术有限公司 打补丁的方法及装置
CN103942073A (zh) * 2014-04-08 2014-07-23 北京奇虎科技有限公司 实现系统热补丁的方法及装置
CN103988181A (zh) * 2011-12-08 2014-08-13 国际商业机器公司 用于给虚拟映像打补丁的方法和系统
CN104054061A (zh) * 2012-01-16 2014-09-17 高通股份有限公司 用以禁止返回定向编程的动态执行阻止
CN104539651A (zh) * 2014-12-05 2015-04-22 浪潮集团有限公司 一种快速接入嵌入式硬件设备到后台管理平台的代理服务器系统及方法
CN105868639A (zh) * 2016-03-30 2016-08-17 百度在线网络技术(北京)有限公司 内核漏洞修复方法和装置
US9430217B2 (en) 2012-09-12 2016-08-30 International Business Machines Corporation Method and apparatus for patching
CN106970806A (zh) * 2015-10-02 2017-07-21 洛克威尔自动控制技术股份有限公司 用于对正在控制工业过程的控制程序进行更新的系统
CN107451474A (zh) * 2016-05-31 2017-12-08 百度在线网络技术(北京)有限公司 用于终端的软件漏洞修复方法和装置
CN108241500A (zh) * 2018-01-15 2018-07-03 腾讯科技(深圳)有限公司 一种硬件组件的修复方法、装置、系统和存储介质
CN109643094A (zh) * 2016-09-30 2019-04-16 欧姆龙株式会社 安全控制单元、安全控制方法、安全控制程序
CN113312620A (zh) * 2021-06-01 2021-08-27 海光信息技术股份有限公司 一种程序安全检测方法及装置、处理器芯片、服务器
CN113678102A (zh) * 2019-10-31 2021-11-19 谷歌有限责任公司 用于更新计算设备上的应用的存储器高效软件打补丁

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US20080276302A1 (en) 2005-12-13 2008-11-06 Yoggie Security Systems Ltd. System and Method for Providing Data and Device Security Between External and Host Devices
US8869270B2 (en) 2008-03-26 2014-10-21 Cupp Computing As System and method for implementing content and network security inside a chip
US8381297B2 (en) 2005-12-13 2013-02-19 Yoggie Security Systems Ltd. System and method for providing network security to mobile devices
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8533820B2 (en) * 2006-12-12 2013-09-10 International Business Machines Corporation Reserved write positions on install media
US9348730B2 (en) * 2007-01-31 2016-05-24 Standard Microsystems Corporation Firmware ROM patch method
US8365272B2 (en) 2007-05-30 2013-01-29 Yoggie Security Systems Ltd. System and method for providing network and computer firewall protection with dynamic address isolation to a device
US8458433B2 (en) * 2007-10-29 2013-06-04 International Business Machines Corporation Management of persistent memory in a multi-node computer system
US8260841B1 (en) * 2007-12-18 2012-09-04 American Megatrends, Inc. Executing an out-of-band agent in an in-band process of a host system
US8839225B2 (en) 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
GB2460462A (en) * 2008-05-30 2009-12-02 Symbian Software Ltd Method for loading software components into RAM by modifying the software part to be loaded based on the memory location to be used.
US8631488B2 (en) 2008-08-04 2014-01-14 Cupp Computing As Systems and methods for providing security services during power management mode
US9626511B2 (en) * 2008-08-26 2017-04-18 Symantec Corporation Agentless enforcement of application management through virtualized block I/O redirection
US8930894B2 (en) 2008-10-08 2015-01-06 Oracle America, Inc. Method and system for executing an executable file
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8294723B2 (en) * 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8789202B2 (en) 2008-11-19 2014-07-22 Cupp Computing As Systems and methods for providing real time access monitoring of a removable media device
US8615740B2 (en) * 2009-03-25 2013-12-24 International Business Machines Corporation Self-fixing executables using virtual function types
US8429603B2 (en) 2009-03-25 2013-04-23 International Business Machines Corporation Virtual typing executables
US10055251B1 (en) 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
US8943498B2 (en) * 2009-05-31 2015-01-27 Red Hat Israel, Ltd. Method and apparatus for swapping virtual machine memory
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US8635705B2 (en) * 2009-09-25 2014-01-21 Intel Corporation Computer system and method with anti-malware
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service
US8365020B2 (en) 2010-03-18 2013-01-29 Red Hat Israel, Ltd. Mechanism for saving crash dump files of a virtual machine on a designated disk
US11411965B2 (en) * 2010-03-19 2022-08-09 Jeffrey Williams Method and system of attack detection and protection in computer systems
EP2375355A1 (en) * 2010-04-09 2011-10-12 ST-Ericsson SA Method and device for protecting memory content
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
EP2455879A1 (fr) * 2010-11-18 2012-05-23 Gemalto SA Procédé de ré-allocation maitrisé de la mémoire d'un dispositif, et programme informatique associé
US20120167218A1 (en) * 2010-12-23 2012-06-28 Rajesh Poornachandran Signature-independent, system behavior-based malware detection
US9058492B1 (en) * 2011-02-14 2015-06-16 Symantec Corporation Techniques for reducing executable code vulnerability
US9372699B2 (en) * 2011-04-08 2016-06-21 Insyde Software Corp. System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device
US8510320B2 (en) * 2011-08-10 2013-08-13 Sap Ag Silent migration of business process binaries
US9158561B2 (en) * 2011-08-18 2015-10-13 Vmware, Inc. Systems and methods for modifying an operating system for a virtual machine
US20130104119A1 (en) * 2011-10-24 2013-04-25 Brian Matsuo Streaming packetized binary patching system and method
KR102132501B1 (ko) 2012-02-15 2020-07-09 더 트러스티이스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어
US8959577B2 (en) * 2012-04-13 2015-02-17 Cisco Technology, Inc. Automatic curation and modification of virtualized computer programs
US20130339934A1 (en) * 2012-06-13 2013-12-19 Josef Troch Updating virtualized services
US8782632B1 (en) * 2012-06-18 2014-07-15 Tellabs Operations, Inc. Methods and apparatus for performing in-service software upgrade for a network device using system virtualization
JP5932511B2 (ja) * 2012-06-19 2016-06-08 キヤノン株式会社 情報処理装置、ソフトウェアの更新方法及びコンピュータプログラム
US9367328B2 (en) * 2012-06-28 2016-06-14 Intel Corporation Out-of-band host OS boot sequence verification
EP2867777A4 (en) * 2012-06-29 2016-02-10 Happy Cloud Inc MANAGEMENT OF WRITING A RECORD TO A DATA STORAGE DEVICE
WO2014025830A1 (en) * 2012-08-07 2014-02-13 South Point Poker Llc Methods and systems for updating online gaming clients
WO2014059037A2 (en) 2012-10-09 2014-04-17 Cupp Computing As Transaction security systems and methods
CN103064718A (zh) * 2013-01-23 2013-04-24 北京伸得纬科技有限公司 一种虚拟机载入器
DE102013206751A1 (de) * 2013-04-16 2014-10-16 Continental Automotive Gmbh System und Verfahren zum Betreiben eines Steuergeräts
US9158914B2 (en) * 2013-04-19 2015-10-13 Crowdstrike, Inc. Executable component injection utilizing hotpatch mechanisms
US11157976B2 (en) 2013-07-08 2021-10-26 Cupp Computing As Systems and methods for providing digital content marketplace security
EP2951955B1 (en) * 2013-08-15 2017-11-15 IMMUN.IO Inc. Method and system for protecting web applications against web attacks
US9086934B2 (en) 2013-08-27 2015-07-21 International Business Machines Corporation Selecting output destinations for kernel messages
US10089461B1 (en) * 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
WO2015123611A2 (en) 2014-02-13 2015-08-20 Cupp Computing As Systems and methods for providing network security using a secure digital device
US10514904B2 (en) * 2014-04-24 2019-12-24 Hewlett Packard Enterprise Development Lp Dynamically applying a patch to a computer application
WO2015178896A1 (en) * 2014-05-20 2015-11-26 Hewlett-Packard Development Company, L.P. Point-wise protection of application using runtime agent and dynamic security analysis
CN104125101B (zh) * 2014-08-12 2017-10-10 烽火通信科技股份有限公司 通信系统网元使用热补丁批量升级所属业务单盘的方法
US10338914B2 (en) * 2014-09-01 2019-07-02 Hewlett Packard Enterprise Development Lp Dynamically applying a patch to a shared library
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
KR20170032132A (ko) 2015-09-14 2017-03-22 서울대학교산학협력단 인메모리 네이티브 그래프 구조와 행 열 테이블의 조인 방법
WO2017122353A1 (ja) * 2016-01-15 2017-07-20 株式会社日立製作所 計算機システム及びその制御方法
CN105893850B (zh) * 2016-03-30 2017-12-15 百度在线网络技术(北京)有限公司 漏洞修复方法和装置
EP3472746B1 (en) * 2016-06-16 2020-05-13 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US10108482B2 (en) * 2016-06-20 2018-10-23 Bank Of America Corporation Security patch tool
US10528479B2 (en) * 2017-06-02 2020-01-07 Huawei Technologies Co., Ltd. Global variable migration via virtual memory overlay technique for multi-version asynchronous dynamic software update
CN109150557A (zh) * 2017-06-13 2019-01-04 中兴通讯股份有限公司 Vnf加固方法、相关设备和计算机可读存储介质
US10761924B2 (en) * 2017-07-25 2020-09-01 Aurora Labs Ltd. Roll back of data delta updates
US10762202B2 (en) * 2018-04-11 2020-09-01 Crowdstrike, Inc. Securely and efficiently providing user notifications about security actions
US10805087B1 (en) 2018-09-28 2020-10-13 Amazon Technologies, Inc. Code signing method and system
GB202001687D0 (en) * 2020-02-07 2020-03-25 Secr Defence An industrial programmable logic controller
KR102421394B1 (ko) * 2020-06-15 2022-07-15 한양대학교 산학협력단 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법
US12032693B2 (en) * 2021-08-05 2024-07-09 Cloud Linux Software Inc. Systems and methods for robust malware signature detection in databases
KR20230095692A (ko) * 2021-12-22 2023-06-29 삼성전자주식회사 메모리 프로세서 제어 방법 및 장치
CN114595461B (zh) * 2022-02-15 2024-07-16 阿里云计算有限公司 一种数据处理的方法和装置

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1254937B (it) * 1991-05-06 1995-10-11 Aggiornamento dinamico di memoria non volatile in un sistema informatico
US6438621B1 (en) * 1994-11-14 2002-08-20 Microsoft Corporation In-memory modification of computer programs
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6546553B1 (en) * 1998-10-02 2003-04-08 Microsoft Corporation Service installation on a base function and provision of a pass function with a service-free base function semantic
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
US6317880B1 (en) * 1999-03-03 2001-11-13 Microsoft Corporation Patch source list management
US6397385B1 (en) * 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
US6363524B1 (en) * 1999-09-10 2002-03-26 Hewlett-Packard Company System and method for assessing the need for installing software patches in a computer system
GB0004090D0 (en) * 2000-02-22 2000-04-12 Innovation Venture Ltd Application programming system and method of operation thereof
US6658657B1 (en) * 2000-03-31 2003-12-02 Intel Corporation Method and apparatus for reducing the overhead of virtual method invocations
TW495675B (en) * 2000-09-14 2002-07-21 Acer Ipull Inc System for updating program executable being running and the method thereof
US7020874B2 (en) * 2001-03-26 2006-03-28 Sun Microsystems, Inc. Techniques for loading class files into virtual machines
JP4426736B2 (ja) 2001-04-27 2010-03-03 株式会社日立製作所 プログラム修正方法およびプログラム
US7386846B2 (en) * 2001-07-26 2008-06-10 Kyocera Wireless Corp. System and method for the management of wireless communications device system software downloads in the field
US7162710B1 (en) * 2001-11-01 2007-01-09 Microsoft Corporation Dynamic modifications to a heterogeneous program in a distributed environment
US7577951B2 (en) * 2002-05-30 2009-08-18 Hewlett-Packard Development Company, L.P. Performance of computer programs while they are running
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US20040143749A1 (en) * 2003-01-16 2004-07-22 Platformlogic, Inc. Behavior-based host-based intrusion prevention system
US7603663B2 (en) * 2003-05-20 2009-10-13 Intel Corporation Apparatus and methods for restoring synchronization to object-oriented software applications in managed runtime environments
US8065725B2 (en) * 2003-05-30 2011-11-22 Yuliang Zheng Systems and methods for enhanced network security
EP1654640B1 (en) * 2003-06-04 2018-08-01 Qualcomm Incorporated Network having customizable generators of sofware updates and mobile electronic devices having customizable updating software
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7472384B1 (en) * 2003-12-02 2008-12-30 Swsoft Holdings, Ltd. System, method and computer program product for on-the-fly patching of executable code
US7421698B2 (en) * 2003-12-22 2008-09-02 Sun Microsystems, Inc. System and method for dynamically and persistently tracking incremental profiling data in a process cloning application environment
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US7424705B2 (en) * 2004-03-11 2008-09-09 Intel Corporation Dynamic management of compiled code
US20050223291A1 (en) * 2004-03-24 2005-10-06 Zimmer Vincent J Methods and apparatus to provide an execution mode transition
US7559058B2 (en) * 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
US7890946B2 (en) * 2004-05-11 2011-02-15 Microsoft Corporation Efficient patching
US7590864B2 (en) * 2004-05-21 2009-09-15 Intel Corporation Trusted patching of trusted code
US8074277B2 (en) * 2004-06-07 2011-12-06 Check Point Software Technologies, Inc. System and methodology for intrusion detection and prevention
US8443171B2 (en) * 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
US7647586B2 (en) * 2004-08-13 2010-01-12 Sun Microsystems, Inc. System and method for providing exceptional flow control in protected code through watchpoints
KR100558394B1 (ko) 2004-08-16 2006-03-10 삼성전자주식회사 전자장치 및 그 프로그램 업데이트 방법
US20060135230A1 (en) * 2004-12-16 2006-06-22 Dhananjay Godse Post-deployment spot creation
US20060174226A1 (en) * 2005-02-03 2006-08-03 Sytex, Inc. Methods, Test Systems And Computer-Readable Medium For Dynamically Modifying Flow Of Executable Code
US7788661B2 (en) * 2005-03-11 2010-08-31 International Business Machines Corporation Method and system for applying patches to a computer program concurrently with its execution
US7568186B2 (en) * 2005-06-07 2009-07-28 International Business Machines Corporation Employing a mirror probe handler for seamless access to arguments of a probed function
US20060288341A1 (en) * 2005-06-15 2006-12-21 Microsoft Corporation Patch-impact assessment through runtime insertion of code path instrumentation
US7853934B2 (en) * 2005-06-23 2010-12-14 Hewlett-Packard Development Company, L.P. Hot-swapping a dynamic code generator
US8055096B2 (en) * 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
US7984432B2 (en) * 2006-05-30 2011-07-19 Infineon Technologies Ag Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101771720B (zh) * 2009-01-07 2013-01-30 上海三零卫士信息安全有限公司 主动管理技术终端的扫描发现方法
CN101482834B (zh) * 2009-01-20 2012-02-22 华为技术有限公司 在线补丁激活方法、通信装置及系统
CN103988181A (zh) * 2011-12-08 2014-08-13 国际商业机器公司 用于给虚拟映像打补丁的方法和系统
CN103988181B (zh) * 2011-12-08 2017-08-25 国际商业机器公司 用于给虚拟映像打补丁的方法和系统
CN104054061A (zh) * 2012-01-16 2014-09-17 高通股份有限公司 用以禁止返回定向编程的动态执行阻止
CN104054061B (zh) * 2012-01-16 2015-11-25 高通股份有限公司 用以禁止返回定向编程的动态执行阻止
CN105303104A (zh) * 2012-01-16 2016-02-03 高通股份有限公司 用以禁止返回定向编程的动态执行阻止
CN105303104B (zh) * 2012-01-16 2019-03-22 高通股份有限公司 用以禁止返回定向编程的动态执行阻止
US9430217B2 (en) 2012-09-12 2016-08-30 International Business Machines Corporation Method and apparatus for patching
CN103677878B (zh) * 2012-09-12 2017-07-14 国际商业机器公司 一种打补丁的方法和装置
US10241813B2 (en) 2012-09-12 2019-03-26 International Business Machines Corporation Method and apparatus for patching
CN103197942A (zh) * 2013-03-18 2013-07-10 华为技术有限公司 一种补丁的生成方法、打补丁的方法及装置
CN103197942B (zh) * 2013-03-18 2016-03-02 华为技术有限公司 一种补丁的生成方法、打补丁的方法及装置
CN103345412B (zh) * 2013-07-10 2016-08-24 华为技术有限公司 打补丁的方法及装置
CN103345412A (zh) * 2013-07-10 2013-10-09 华为技术有限公司 打补丁的方法及装置
CN103942073A (zh) * 2014-04-08 2014-07-23 北京奇虎科技有限公司 实现系统热补丁的方法及装置
CN103942073B (zh) * 2014-04-08 2017-12-01 北京奇虎科技有限公司 实现系统热补丁的方法及装置
CN104539651A (zh) * 2014-12-05 2015-04-22 浪潮集团有限公司 一种快速接入嵌入式硬件设备到后台管理平台的代理服务器系统及方法
CN104539651B (zh) * 2014-12-05 2017-07-14 浪潮集团有限公司 一种快速接入嵌入式硬件设备到后台管理平台代理服务器的方法
CN106970806A (zh) * 2015-10-02 2017-07-21 洛克威尔自动控制技术股份有限公司 用于对正在控制工业过程的控制程序进行更新的系统
CN106970806B (zh) * 2015-10-02 2020-04-21 罗克韦尔自动化技术公司 用于对正在控制工业过程的控制程序进行更新的系统
CN105868639A (zh) * 2016-03-30 2016-08-17 百度在线网络技术(北京)有限公司 内核漏洞修复方法和装置
CN107451474A (zh) * 2016-05-31 2017-12-08 百度在线网络技术(北京)有限公司 用于终端的软件漏洞修复方法和装置
CN107451474B (zh) * 2016-05-31 2020-06-26 百度在线网络技术(北京)有限公司 用于终端的软件漏洞修复方法和装置
CN109643094A (zh) * 2016-09-30 2019-04-16 欧姆龙株式会社 安全控制单元、安全控制方法、安全控制程序
US10935935B2 (en) 2016-09-30 2021-03-02 Omron Corporation Safety control unit, safety control method, and safety control program
CN109643094B (zh) * 2016-09-30 2021-10-19 欧姆龙株式会社 安全控制单元、安全控制方法、存储介质
CN108241500A (zh) * 2018-01-15 2018-07-03 腾讯科技(深圳)有限公司 一种硬件组件的修复方法、装置、系统和存储介质
CN108241500B (zh) * 2018-01-15 2022-02-01 腾讯科技(深圳)有限公司 一种硬件组件的修复方法、装置、系统和存储介质
CN113678102A (zh) * 2019-10-31 2021-11-19 谷歌有限责任公司 用于更新计算设备上的应用的存储器高效软件打补丁
CN113312620A (zh) * 2021-06-01 2021-08-27 海光信息技术股份有限公司 一种程序安全检测方法及装置、处理器芯片、服务器
CN113312620B (zh) * 2021-06-01 2022-12-09 海光信息技术股份有限公司 一种程序安全检测方法及装置、处理器芯片、服务器

Also Published As

Publication number Publication date
EP2287724A2 (en) 2011-02-23
US8286238B2 (en) 2012-10-09
KR20080029949A (ko) 2008-04-03
CN101154187B (zh) 2011-04-13
KR100965644B1 (ko) 2010-06-23
EP2287724A3 (en) 2011-06-01
EP1909171A1 (en) 2008-04-09
US20080083030A1 (en) 2008-04-03

Similar Documents

Publication Publication Date Title
CN101154187B (zh) 用于为程序打补丁的方法、装置、服务处理器和系统
US10642596B2 (en) Embedded device and program updating method
KR100675518B1 (ko) 모듈식 바이오스 업데이트 메커니즘
US7784044B2 (en) Patching of in-use functions on a running computer system
US7036007B2 (en) Firmware architecture supporting safe updates and multiple processor types
US9696989B1 (en) Systems and methods for generating and applying operating system live updates
JP4793733B2 (ja) 高インテグリティファームウェア
US6754828B1 (en) Algorithm for non-volatile memory updates
US20040255106A1 (en) Recovery of operating system configuration data by firmware of computer system
US8032740B2 (en) Update in-use flash memory without external interfaces
US7512749B2 (en) Safe software revision for embedded systems
US6542981B1 (en) Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode
US20090007093A1 (en) Dynamic correction of component manifests
KR20030085071A (ko) 악의적인 컴퓨터 프로그램에 의하여 손상된 컴퓨터시스템의 복구 시스템 및 방법
CN110162429B (zh) 系统修复方法、服务器及存储介质
US7546596B2 (en) Non-disruptive method, system and program product for overlaying a first software module with a second software module
US20030188146A1 (en) Method of ordered execution of firmware modules in a pre-memory execution environment
WO2022058459A1 (en) Bootloaders
US8689206B2 (en) Isolating operating system in-memory modules using error injection
US11803381B2 (en) Instruction simulation device and method thereof
Brady et al. Dynamic Repair of Mission-Critical Applications with Runtime Snap-Ins
Hamilton et al. High performance dynamic linking through caching
CN117763538A (zh) 动态链接库的注入方法、装置和计算机可读介质
Georges DLL shell game and other misdirections: the Windows’s native loader is a magician

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110413

Termination date: 20180929

CF01 Termination of patent right due to non-payment of annual fee