CN100570623C - 防止恶意软件在计算机系统内执行的方法 - Google Patents

防止恶意软件在计算机系统内执行的方法 Download PDF

Info

Publication number
CN100570623C
CN100570623C CN200710005571.4A CN200710005571A CN100570623C CN 100570623 C CN100570623 C CN 100570623C CN 200710005571 A CN200710005571 A CN 200710005571A CN 100570623 C CN100570623 C CN 100570623C
Authority
CN
China
Prior art keywords
computer system
instruction
constant series
application program
displacement
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.)
Active
Application number
CN200710005571.4A
Other languages
English (en)
Other versions
CN101021886A (zh
Inventor
大卫·C.·查利纳
迈克·C.·戴维斯
彼特·赫特舒斯
罗德·D.·沃特曼
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.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
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 Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Publication of CN101021886A publication Critical patent/CN101021886A/zh
Application granted granted Critical
Publication of CN100570623C publication Critical patent/CN100570623C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Abstract

本发明揭示一种防止恶意软件在计算机系统内执行的方法。在应用程序中对指令子集进行置换从而在对计算机系统的应用程序进行任何实际执行之前产生指令的置换序列。指令的置换序列的置换序列号存储在置换指令指针表中。在执行模块中执行指令的置换序列,该执行模块能够根据存储在置换指令指针表中的指令的置换序列的置换序列号将指令的置换序列翻译为计算机系统内的处理器的实际机器代码。

Description

防止恶意软件在计算机系统内执行的方法
技术领域
本发明总体上涉及避免恶意软件,特别地涉及一种避免恶意软件在计算机系统中执行的方法。
背景技术
诸如计算机病毒的恶意软件能够以多种途径进入计算机系统。例如,它们能够通过插入计算机系统的磁盘进入计算机,或者通过由计算机系统的用户打开的电子邮件进入该计算机系统。如果恶意软件在计算机系统内执行的话,它们会导致计算机系统的问题。例如,计算机的安全性被泄密或计算机系统内的文件被破坏。
使用诸如扫描搜索串这样简单的检测技术能够容易地检测到特定类型的恶意软件。然而,通过压缩或加密转换恶意代码也能够容易地破坏这种类型的检测过程,从而旁通扫描过滤器。检测恶意软件的另一方法是运行程序同时在程序执行期间尝试拦截恶意动作。这种技术称为行为阻止(behaviourblocking),具有许多缺点。除了尝试拦截恶意动作,该程序可能给计算机系统带来危害。进一步地,行为阻止机制典型地在进行阻止确定时不能浏览整个动作日志。因此,行为阻止机制可能做出次优的阻止决定,这就意味着可能阻止无害的程序同时可能允许执行有害的程序。
检测恶意软件的另一方法是在计算机系统的隔离环境下仿真可疑代码,从而保护计算机系统不受可疑代码的恶意动作。仿真的一个缺点是在它可以保护计算机系统的各部分不受病毒攻击时,不能保护它自己。此外,数据会被感染,这导致破坏该隔离环境。
因此,需要提供一种改进的方法,用于防止恶意软件在计算机系统内执行。
发明内容
根据本发明的优选实施例,在应用程序中对指令子集进行置换从而在对计算机系统上的应用程序进行任何实际执行之前,产生指令的置换序列。指令的置换序列的置换序列号存储在置换指令指针表中。在执行模块中执行指令的置换序列,能够根据存储在置换指令指针表中的指令的置换序列的置换序列号在计算机系统内将指令的置换序列翻译为处理器的实际机器代码;
其中,所述产生指令的置换序列的步骤包括:
选择在0和n!-1之间的随机数r,所述n为需要置换指令的指令子集;
确定第一个指令号的空位位置为:所述随机数r除以(n-1)!获得的商;
用所述除法的余数代替所述随机数r,以确定下一个指令号的空位位置,直到所有的空位都填满了指令号,对于每次确定,分母(n-1)!中的n递减1。
在下述详细的书面描述中,本发明所有的特点和优点将会变得明显。
附图说明
在结合附图并参考对示意实施例的以下详细的描述能够更好地理解本发明本身、优选的使用模式、进一步的目的及其优点。
图1是根据本发明的优选实施例的防止恶意软件在计算机系统内执行的方法的概念图;
图2是包括本发明的优选实施例的计算环境的方框图;和
图3a-3e描述根据本发明的优选实施例置换指令的序列。
具体实施方式
通常计算机系统内具有不同级别的指令集。第一(最低)级是机器级的指令,第二级是操作系统应用二进制接口指令。在第二级,操作系统已经抽象一些机器级的指令,使它们更容易理解。第三级别是宏级指令,在此级应用进一步抽象计算机系统的控制,从而允许简易编程。
由于许多技术致力于保护第二和第三级的指令,本发明仅仅针对第一级指令的保护,尤其是在这是许多计算机病毒使用的级别时。
一般地讲,如果不是不可能,在不知道计算机系统内的处理器的机器级的指令集时写在计算机系统内能够执行的机器级程序是不可能的。此外,在计算机系统内安装软件要求该软件首先要理解要安装的计算机系统的指令集。因而,根据本发明的优选实施例,应用程序初始转换为应用程序的交叉编译代码集,然后在能够识别该应用程序的交叉编译代码集的执行模块中执行该应用程序的交叉编译代码集。
现在参考附图,特别参考图1,描述根据本发明的优选实施例的防止恶意软件在计算机系统中执行的方法的概念图。如图所示,计算机系统10包括转换模块11和执行模块12。在计算机系统10中执行的应用程序需要经过安装过程。在安装过程期间,计算机系统10的用户能够决定是否要在计算机系统10内安装应用程序。如果用户决定要在计算机系统10内安装应用程序,则将该应用程序发送至转换模块11,在其中将该应用程序转换为应用程序的交叉编译代码集。然后在能够识别应用程序的交叉编译代码集并将其翻译为处理器的实际机器代码的执行模块中执行该应用程序的交叉编译代码集。
不经过安装过程,应用程序就不能由执行模块12执行。例如,如在非法途径15所示的,即使如果病毒程序瞒过了用户的检测并在用户不知的情况下放置在计算机系统10内,该病毒程序仍然不能由执行模块12执行,因为该病毒程序没有经过安装过程。因而,计算机系统10对病毒程序可能已经带来的潜在危害是安全的。
在实践中,转换模块11和执行模块12应该彼此隔离。实际上,应当防止执行模块12从除了转换模块11之外的任何源接受代码。
现在参考图2,描述包括本发明的优选实施例的计算环境的方框图。如图所示,计算机系统20包括硬件结构21,虚拟机管理器(VMM)或管理程序22和虚拟机23a-23b。虚拟机23a和23b优选地位于分离的分区,从而虚拟机23a内的任何执行都和虚拟机23b隔离,反之亦然。VMM22控制虚拟机23a和23b之间的所有通信。此外,VMM22能够直接与硬件结构21通信。硬件结构21包括已知结构,例如处理器、寄存器、存储器管理单元、存储设备、输入/输出设备等。
每个虚似机23a-23b内能够同时执行操作系统和多个应用程序。例如,在虚拟机23a内执行操作系统24和应用程序25,而在虚拟机23b内执行操作系统26和应用程序27。
尽管不要求,操作系统24可与操作系统26不同。例如,操作系统24可以是开放源Linux操作系统,而操作系统25可以是微软公司制造的Windows(注册商标)操作系统。同样地,由虚拟机23a仿真的下层处理器也可以不同于由虚拟机23b仿真的下层处理器。例如,由虚拟机23a仿真的下层处理器可以是英特尔公司制造的Pentium(注册商标)处理器,而由虚拟机23b仿真的下层处理器可以是美国国际商用机器公司制造的PowerPC(注册商标)处理器。
包括操作系统和相关应用程序的每个虚拟机23a-23b都在用户级操作。当VMM 22使用直接执行时,VMM 22被设置为所谓的用户模式(即有限特权),从而虚拟机23a-23b都不能直接入控制硬件结构21的操作的不同的特权寄存器。相反地,所有的特权指令都被捕获入VMM 22。
在图2中,显示虚拟机23a包括交叉编译器28,用于执行应用程序的初始交叉编译。此外,显示虚拟机23b包括执行模块29,用于执行应用程序的交叉编译代码。优选地通过置换算法执行交叉编译,并且结果存储在置换指令指针表30中。置换指令指针表30包括置换序列的多个条目。每个置换序列与应用程序的交叉编译代码集相关。置换指令指针表30内的所有置换序列可能彼此不同,虽然不要求它们彼此不同。在图2中,显示置换指令指针表30放置在VMM 22中;但是,置换指令指针表30也可设置在虚拟机23a中,只要它也可由虚拟机23b存取。
执行置换的示例方法如下。首先为了置换,从一组指令中选择指令n的子集。不是所有的指令置换都是同样地有用的。例如,标识指令的置换是根本没有用。因此应当识别特定机器指令(诸如JUMP指令)做为重要指令,以便确保所有的重要指令都被置换。
产生置换有多种方法。一种方法是利用基于散列(hash)或加密的函数,从而在数据段中的每个指令具有不同的映射,即,H(A1),H(A2),...,H(Ai),其中H是基于散列的函数,而A是指令。使用基于散列或加密的函数的问题在于:从通常编译的观点来看,同样的指令可能具有不同的散列结果。例如,指令A5和A9可以是同样的指令,但是H(A5)不必等于H(A9)。
另一个方法是使用不同的映射函数P(A),其中P是置换,而A是指令,生成P1(A),P2(A),...,Pn(A)。这个方法产生更加可预测的交叉编译结果,因为不论出现在哪个代码段,P1(J)都应该是相同的,其中J是给定指令。
置换序列指定指令n的子集被置换或转换的方法。每个置换序列可看成是具有多个空位(slot)的条目,每个空位要填充指令号。为了生成第r个的置换序列,初始选择在0和n!-1之间的随机数。例如,如果需要置换指令n的子集是5(这意味着有5!=120个置换序列),随机数101可在0和5!-1之间选择作为第101个置换序列。
第一个指令号的空位位置Pos由选择的随机数r除以(n-1)!表示如下:
Pos=r/(n-1)!
除法的余数代替选择的随机数r,用于确定下一个指令号的空位位置Pos,直到所有的空位都填满了指令号。对于每次确定,分母(n-1)!中的n递减1。
因而,对于选择的随机数101,第一指令号的空位位置是101/(5-1)!=4,如图3a所示。101/(5-1)!的余数是5,第二指令号的空位位置是5/(4-1)!=0,如图3b所示。5/(4-1)!的余数是5,第三指令号的空位位置是5/(3-1)!=2,如图3c所示。5/(3-1)!的余数是1,第四指令号的空位位置是1/(2-1)!=1,如图3d所示。第五指令号位于剩余空白空位位置,如图3e所示。
然后将置换序列“25431”(图3e)输入至置换指令指针表30(图2)作为第101个置换序列的条目。应用程序可根据第101个置换序列通过交叉编译器28(图2)置换为交叉编译代码集。在执行期间,交叉编译代码集可根据存储在置换指令指针表30中的第101个置换序列通过执行模块29(图2)执行。
例如,如果选择的要置换的5个指令是ADD(加),SUBTRACT(减),JUMP(跳转),BRANCH(转移)和STORE(存储),则相应地为每个指令指派指令号,即,指令号1=ADD,指令号2=SUBTRACT,指令号3=JUMP,指令号4=BRANCH,指令号5=STORE。当第101个置换序列用于执行图2的交叉编译器28中的应用程序的交叉编译时,上述5个指令在应用程序中的每次出现都根据置换序列“25431”转换。换句话说,应用程序中的每个ADD指令都被转换成SUBTRACT指令,应用程序中的每个SUBTRACT指令都被转换成STORE指令,应用程序中的每个JUMP指令都被转换成BRANCH指令,应用程序中的每个BRANCH指令都被转换成JUMP指令,应用程序中的每个STORE指令都被转换成ADD指令。在执行应用程序的交叉编译代码期间,在图2的执行模块29中执行上述转换的逆转换。
置换可以以静态或动态方式执行。如果置换是以静态方式执行,则一组计算机系统可设置为使用同样的置换序列。对于信息技术管理者来说这样的方式是更简单,因为在安装期间要求每个应用程序的交叉编译只执行一次。
如果置换是以动态方式执行,有多种选择。可以周期地改变置换序列集。那些置换的交叉编译可被执行一次,然后每次启动计算机系统时,基于实际使用的置换序列可运行不同的交叉编译程序集。进一步地,每次计算机系统启动时该置换序列可随机地变化。在这种情况下,由计算机系统运行的交叉编译器必须“在飞行中”(on the fly)进行交叉编译。
此外,对每个应用程序都可改变置换序列,并且能够以不同的方法完成。最简单的实现是让VMM使用应用的签名散列作为流加密算法的密钥,从而为该应用程序产生唯一的指令集。任何改变的应用程序(诸如由于导致缓存溢出的病毒在主存储器中被改变)会开始产成生不同的指令集。
可选地,在每次下载应用程序时,VMM可产生随机数,该应用程序的代码段通过流加密或散列(因为不必是可逆的)引擎运行以改变交叉编译。这个方法提供了附加的安全级别,因为Pn(A)函数变为常量函数P(A)并且保持不可预测。
如上所述,本发明提供一种防止恶意软件在计算机系统中执行的方法。如果VMM保留与要运行的每个置换应用的散列相关的置换,即使抽样攻击(由攻击者以某种方式获得抽样置换应用、和确定的置换应用于病毒,然后发送病毒执行感染)失败。
也需要注意,尽管以纯功能的计算机系统的角度描述了本发明,本领域技术人员应当理解本发明的机制能够以多种形式作为程序产品分布,不论使用哪种特定类型的信号承载媒体实际地实现该分布,本发明同样适用。信号承载媒体的例子包括但不限于诸如软盘或光盘的可记录类型的介质,或诸如模拟或数字通信链路的传输类型媒介。
尽管本发明参考优选实施例进行特定的表示和描述,本领域技术人员应当懂得,在不偏离本发明精神和范围的前提下可对本发明的形式和细节进行不同的变化。

Claims (33)

1.一种防止恶意软件在计算机系统内执行的方法,所述方法包括:
对应用程序中的指令子集进行置换,从而在对所述计算机系统的所述应用程序进行任何实际执行之前产生指令的置换序列;
将指令的所述置换序列的置换序列号存储在置换指令指针表中;和
在执行模块中执行指令的所述置换序列,根据存储在所述置换指令指针表中的指令的所述置换序列的所述置换序列号,所述执行模块能够将指令的所述置换序列翻译为所述计算机系统内的处理器的实际机器代码;
其中,所述产生指令的置换序列的步骤包括:
选择在0和n!-1之间的随机数r,所述n为需要置换指令的指令子集;
确定第一个指令号的空位位置为:所述随机数r除以(n-1)!获得的商;
用所述除法的余数代替所述随机数r,以确定下一个指令号的空位位置,直到所有的空位都填满了指令号,对于每次确定,分母(n-1)!中的n递减1。
2.根据权利要求1所述的方法,其中所述应用程序可在计算机系统中执行而不进行交叉编译。
3.根据权利要求1所述的方法,其中所述方法进一步包括:
提供第一虚拟机执行所述置换;和
提供第二虚拟机执行所述执行。
4.根据权利要求3所述的方法,其中所述方法进一步包括在所述计算机系统中提供虚拟存储管理器,用于控制所述第一和第二虚拟机。
5.根据权利要求3所述的方法,其中所述方法进一步包括将所述第一和第二虚拟机放置在分开的分区。
6.根据权利要求3所述的方法,其中所述方法进一步包括在所述第一和第二虚拟机中提供不同的操作系统。
7.根据权利要求1所述的方法,其中,所述对应用程序中的指令子集进行置换的步骤包括:
利用基于散列或加密的函数进行置换;或,
使用不同的映射函数进行置换。
8.根据权利要求1所述的方法,其中,所述置换以静态或动态方式执行。
9.根据权利要求8所述的方法,其中,所述置换以动态方式执行时,还包括:
周期性地改变置换序列集的步骤。
10.根据权利要求8所述的方法,其中,所述置换以动态方式执行时,还包括:
在每次计算机系统启动时所述置换序列随机变化的步骤。
11.根据权利要求1所述的方法,其中,对每个应用程序都可改变置换序列。
12.一种能够防止恶意软件被执行的计算机系统,所述计算机系统包括:
用于对应用程序中的指令子集进行置换从而在对所述计算机系统的所述应用程序进行任何实际执行之前产生指令的置换序列的装置;
用于将指令的所述置换序列的置换序列号存储在置换指令指针表中的装置;和
用于执行在执行模块中的指令的所述置换序列的装置,所述执行模块能够根据存储在所述置换指令指针表中的指令的所述置换序列的所述置换序列号将指令的所述置换序列翻译为所述计算机系统内的处理器的实际机器代码;
其中,所述产生指令的置换序列的装置包括:
用于选择在0和n!-1之间的随机数r的装置,所述n为需要置换指令的指令子集;
用于确定第一个指令号的空位位置的装置,所述第一个指令号的空位位置为:所述选择的随机数r除以(n-1)!获得的商;
用于用所述除法的余数代替所述选择的随机数r,以确定下一个指令号的空位位置,直到所有的空位都填满了指令号的装置,其中,对于每次确定,分母(n-1)!中的n递减1。
13.根据权利要求12所述的计算机系统,其特征在于所述应用程序可在计算机系统中执行而不进行交叉编译。
14.根据权利要求12所述的计算机系统,其特征在于所述计算机系统进一步包括:
第一虚拟机,包含用于执行置换的所述装置;和
第二虚拟机,包含用于执行的所述装置。
15.根据权利要求14所述的计算机系统,其特征在于所述计算机系统进一步包括控制所述第一和第二虚拟机的虚拟存储管理器。
16.根据权利要求14所述的计算机系统,其特征在于所述第一和第二虚拟机位于分开的分区。
17.根据权利要求14所述的计算机系统,其特征在于所述第一虚拟机的操作系统不同于所述第二虚拟机的操作系统。
18.根据权利要求12所述的计算机系统,其中,所述产生指令的置换序列的装置包括:
用于利用基于散列或加密的函数进行置换的装置;或,
用于使用不同的映射函数进行置换的装置。
19.根据权利要求12所述的计算机系统,其中,所述产生指令的置换序列的装置包括:
用于以静态方式执行置换的装置;或,
用于以动态方式执行置换的装置。
20.根据权利要求19所述的方法,其中,所述用于以动态方式执行置换的装置包括:
用于周期性地改变置换序列集的装置。
21.一种防止恶意软件在计算机系统内执行的方法,所述方法包括:
交叉编译应用程序,在所述计算机系统的所述应用程序的任何实际执行之前,通过置换算法产生所述应用程序的指令子集的置换序列,再根据所述置换序列进行交叉编译产生所述应用程序的交叉编译代码集;和
执行在执行模块中的所述应用程序的所述交叉编译代码集,所述执行模块能够识别所述应用程序的所述交叉编译代码集并将其翻译为所述计算机系统中的处理器的实际机器代码;
其中,所述通过置换算法产生所述应用程序指令的置换序列的步骤包括:
选择在0和n!-1之间的随机数r,所述n为需要置换指令的指令子集;
确定第一个指令号的空位位置为:所述随机数r除以(n-1)!获得的商;
用所述除法的余数代替所述随机数r,以确定下一个指令号的空位位置,直到所有的空位都填满了指令号,对于每次确定,分母(n-1)!中的n递减1。
22.根据权利要求21所述的方法,其中所述应用程序可在计算机系统中执行而不进行交叉编译。
23.根据权利要求21所述的方法,其中所述方法进一步包括:
提供第一虚拟机执行所述交叉编译;和
提供第二虚拟机执行所述执行。
24根据权利要求23所述的方法,其中所述方法进一步包括:在所述计算机系统中提供虚拟存储管理器,用于控制所述第一和第二虚拟机。
25.根据权利要求23所述的方法,其中所述方法进一步包括将所述第一和第二虚拟机放置于分开的分区。
26.根据权利要求23所述的方法,其中所述方法进一步包括在所述第一和第二虚拟机中提供不同的操作系统。
27.根据权利要求21所述的方法,其中,所述置换算法包括:
利用基于散列或加密的函数进行置换的置换算法;或,
使用不同的映射函数进行置换的置换算法。
28.一种能够防止恶意软件被执行的计算机系统,所述计算机系统包括:
交叉编译应用程序以便在所述计算机系统的所述应用程序的任何实际执行之前,通过置换算法产生所述应用程序的指令子集的置换序列,再根据所述置换序列进行交叉编译产生所述应用程序的交叉编译代码集的装置;和
执行在执行模块中的所述应用程序的所述交叉编译代码集的装置,所述执行模块能够识别所述应用程序的所述交叉编译代码集并将其翻译为所述计算机系统中的处理器的实际机器代码;
其中,所述产生所述应用程序的交叉编译代码集的装置包括:
用于选择在0和n!-1之间的随机数r的装置,所述n为需要置换指令的指令子集;
用于确定第一个指令号的空位位置的装置,所述第一个指令号的空位位置为:所述随机数r除以(n-1)!获得的商;
用于用所述除法的余数代替所述随机数r,以确定下一个指令号的空位位置,直到所有的空位都填满了指令号的装置,其中,对于每次确定,分母(n-1)!中的n递减1。
29.根据权利要求28所述的计算机系统,其特征在于所述应用程序可在计算机系统中执行而不进行交叉编译。
30.根据权利要求28所述的计算机系统,其特征在于所述计算机系统进一步包括:
第一虚拟机,包含进行交叉编译的所述装置;和
第二虚拟机,包含用于执行的所述装置。
31.根据权利要求30所述的计算机系统,其特征在于所述计算机系统进一步包括控制所述第一和第二虚拟机的虚拟存储管理器。
32.根据权利要求30所述的计算机系统,其特征在于所述第一和第二虚拟机位于分开的分区。
33.根据权利要求30所述的计算机系统,其特征在于所述第一虚拟机的操作系统不同于所述第二虚拟机的操作系统。
34.根据权利要求28所述的计算机系统,其特征在于,所述置换算法包括:
利用基于散列或加密的函数进行置换的置换算法;或,
使用不同的映射函数进行置换的置换算法。
CN200710005571.4A 2006-02-14 2007-02-12 防止恶意软件在计算机系统内执行的方法 Active CN100570623C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/353,896 2006-02-14
US11/353,896 US8041958B2 (en) 2006-02-14 2006-02-14 Method for preventing malicious software from execution within a computer system
US11/353,893 2006-02-14

Publications (2)

Publication Number Publication Date
CN101021886A CN101021886A (zh) 2007-08-22
CN100570623C true CN100570623C (zh) 2009-12-16

Family

ID=38370158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710005571.4A Active CN100570623C (zh) 2006-02-14 2007-02-12 防止恶意软件在计算机系统内执行的方法

Country Status (2)

Country Link
US (1) US8041958B2 (zh)
CN (1) CN100570623C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324889A (zh) * 2012-03-22 2013-09-25 国际商业机器公司 用于检测执行程序模块中的恶意计算机代码的方法和系统

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694797B2 (en) * 2006-02-14 2014-04-08 Lenovo (Sinapore) Pte Ltd Method for preventing malicious software from execution within a computer system
US8086873B2 (en) * 2006-06-05 2011-12-27 Lenovo (Singapore) Pte. Ltd. Method for controlling file access on computer systems
US8621183B2 (en) * 2008-07-28 2013-12-31 Advanced Micro Devices, Inc. Processor with support for nested speculative sections with different transactional modes
US9177145B2 (en) * 2009-03-24 2015-11-03 Sophos Limited Modified file tracking on virtual machines
US20120159193A1 (en) * 2010-12-18 2012-06-21 Microsoft Corporation Security through opcode randomization
US8776223B2 (en) * 2012-01-16 2014-07-08 Qualcomm Incorporated Dynamic execution prevention to inhibit return-oriented programming
WO2013128412A1 (en) * 2012-02-29 2013-09-06 Media Patents, S.L. Method of secure storing of content objects, and system and apparatus thereof
KR101681440B1 (ko) * 2012-12-06 2016-11-30 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 블록 코드 퍼뮤테이션을 이용한 멀웨어 공격 방지
WO2015200510A1 (en) 2014-06-24 2015-12-30 Virsec Systems, Inc. Automated code lockdown to reduce attach surface for software
KR102582628B1 (ko) * 2015-04-07 2023-09-22 런세이프 시큐리티, 인크. 이진 및 메모리 다이버시티를 통한 난독화 시스템 및 방법
IL242523A0 (en) 2015-04-16 2016-04-21 Yuval Elovici A method and system for protecting computer systems from malicious software using variable commands

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1465383A (en) * 1920-03-17 1923-08-21 Frank J Walsh Composite lumber
US1660480A (en) * 1925-03-13 1928-02-28 Daniels Ernest Stuart Parquet-floor panels
US2037259A (en) * 1932-04-21 1936-04-14 Evans Prod Co Wood flooring
US2894292A (en) * 1957-03-21 1959-07-14 Jasper Wood Crafters Inc Combination sub-floor and top floor
US3365850A (en) * 1965-03-03 1968-01-30 Mari & Sons Flooring Co Inc Dimensionally stable wood flooring
US3579941A (en) * 1968-11-19 1971-05-25 Howard C Tibbals Wood parquet block flooring unit
US3686061A (en) * 1970-10-12 1972-08-22 West Coast Adhesives Co Method for producing elongated plywood panels
US4574349A (en) 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
JPH0628036B2 (ja) 1988-02-01 1994-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーシヨン シミュレーシヨン方法
US5167023A (en) 1988-02-01 1992-11-24 International Business Machines Translating a dynamic transfer control instruction address in a simulated CPU processor
US4951195A (en) 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
WO1997027537A2 (en) 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
US6061521A (en) 1996-12-02 2000-05-09 Compaq Computer Corp. Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle
US6101592A (en) 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
JP2000056966A (ja) 1998-08-07 2000-02-25 Nippon Telegr & Teleph Corp <Ntt> マイクロプロセッサシステムおよびマイクロプロセッサ動作解析防止方法
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6708272B1 (en) 1999-05-20 2004-03-16 Storage Technology Corporation Information encryption system and method
JP4042280B2 (ja) 1999-12-21 2008-02-06 富士ゼロックス株式会社 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US20020100231A1 (en) * 2001-01-26 2002-08-01 Miller Robert J. Textured laminate flooring
CA2452419A1 (en) 2001-07-05 2003-01-16 Vladimir Vladimirovich Nasypny Method for an integrated protection system of data distributed processing in computer networks and system for carrying out said method
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
JP4568489B2 (ja) 2003-09-11 2010-10-27 富士通株式会社 プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置
US7424620B2 (en) 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US7996671B2 (en) * 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US7493483B2 (en) 2004-02-19 2009-02-17 International Business Machines Corporation Method to prevent vulnerability to virus and worm attacks through instruction remapping

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324889A (zh) * 2012-03-22 2013-09-25 国际商业机器公司 用于检测执行程序模块中的恶意计算机代码的方法和系统
CN103324889B (zh) * 2012-03-22 2016-03-09 国际商业机器公司 用于检测执行程序模块中的恶意计算机代码的方法和系统

Also Published As

Publication number Publication date
CN101021886A (zh) 2007-08-22
US20070192620A1 (en) 2007-08-16
US8041958B2 (en) 2011-10-18

Similar Documents

Publication Publication Date Title
CN100570623C (zh) 防止恶意软件在计算机系统内执行的方法
Gómez-Hernández et al. R-Locker: Thwarting ransomware action through a honeyfile-based approach
CN101438529B (zh) 经由动态转换的主动计算机恶意软件保护
CN105393255B (zh) 用于虚拟机中的恶意软件检测的过程评估
US7975308B1 (en) Method and apparatus to secure user confidential data from untrusted browser extensions
US8762948B1 (en) System and method for establishing rules for filtering insignificant events for analysis of software program
US20220035919A1 (en) Just in time memory analysis for malware detection
US8694797B2 (en) Method for preventing malicious software from execution within a computer system
US7665139B1 (en) Method and apparatus to detect and prevent malicious changes to tokens
US7251735B2 (en) Buffer overflow protection and prevention
Zakeri et al. A static heuristic approach to detecting malware targets
CN101183414A (zh) 一种程序检测的方法、装置及程序分析的方法
Pont et al. A roadmap for improving the impact of anti-ransomware research
US10902122B2 (en) Just in time memory analysis for malware detection
US9202053B1 (en) MBR infection detection using emulation
Krasov et al. Methods for building a trusted environment in Unix operating systems based on the implementation of a digital watermark
Vehabovic et al. Data-centric machine learning approach for early ransomware detection and attribution
US9967263B2 (en) File security management apparatus and management method for system protection
Ketzaki et al. A behaviour based ransomware detection using neural network models
Nakano et al. Memory access pattern protection for resource-constrained devices
Blackthorne et al. Environmental authentication in malware
Noman et al. A static analysis tool for malware detection
Kumar et al. Protection against buffer overflow attacks through runtime memory layout randomization
JP5177206B2 (ja) ソフトウェアの改竄検出装置及び改竄検出方法
JP4575350B2 (ja) コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法

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