CN101183414A - 一种程序检测的方法、装置及程序分析的方法 - Google Patents
一种程序检测的方法、装置及程序分析的方法 Download PDFInfo
- Publication number
- CN101183414A CN101183414A CNA2007102029413A CN200710202941A CN101183414A CN 101183414 A CN101183414 A CN 101183414A CN A2007102029413 A CNA2007102029413 A CN A2007102029413A CN 200710202941 A CN200710202941 A CN 200710202941A CN 101183414 A CN101183414 A CN 101183414A
- Authority
- CN
- China
- Prior art keywords
- program
- behavior
- detected
- result
- data sequence
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种程序检测的方法,包括:获取待检测程序的运行过程或运行结果,形成程序的行为数据序列;将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数;根据所述危险系数,对所述待检测程序进行标识或记录。该方法能够动态跟踪程序的运行,提高了对危害行程序的识别率以及降低了对正常程序的误杀率。本发明还提供了一种程序检测的装置和程序分析的方法。
Description
技术领域
本发明涉及一种程序检测的方法、装置及程序分析的方法。
背景技术
在计算机技术发展的今天,人们的生活、工作、出行等已经逐渐离不开了计算机技术。维护计算机系统的正常运行,已经是依赖于计算机技术行业的一项即重要又复杂的工作,防止计算机病毒的危害成为维护计算机系统正常运行的重点工作之一。众所周知,使计算机系统无法正常工作的很大一部分原因是计算机病毒所导致的。
随着计算机应用技术和计算机网络技术的发展,计算机病毒的危害能力也随着最初的仅仅只是恶作剧,发展到了破坏计算机系统以及窃取机密性信息;计算机病毒的传播能力随着最初的依靠软盘等存储介质传播,发展到了利用互联网传播;计算机病毒的隐藏性随着先前的藏匿于系统内部或文件中,发展到了自身带有变形功能的病毒体,使传统的特征码识别的杀毒技术无法应对这类的病毒。
现在的带有变形能力的病毒自身就带有加密功能,这种病毒可以采用多种加密方式来改变病毒体自身的特征代码。例如:国家计算机病毒应急处理中心、计算机病毒防治产品检验中心(http://www.antivirus-china.org.cn)官方网站上曾登载了一篇名为《计算机病毒的发展趋势及KV3000的反病毒对策》中也详细介绍了诸多变形病毒。
无论如何人们都发现变形病毒的核心就是为了改变自身的特征,使传统的基于特征码识别的反病毒技术无法识别变形病毒,所以单独使用传统的特征码识别技术已经无法应对这样的病毒,因此人们开始从计算机病毒行为的方式研发反病毒技术。
例如1:一个基于利用LSM(LinuxSecurity Modules,Linux安全模块)截获点进行程序行为控制的方法,首先利用LSM截获点描述某种程序正常行为并建立正常行为模式库,在截获待检测程序所具有的LSM控制点信息后,生成LSM截获点序列,然后将生成的序列与正常行为模式库中已有的截获点序列比较,如果存在匹配的截获点序列,则确定该待检测程序为某种种类的程序。
该方法中,LSM框架对系统需要保护的资源进行分析,确定哪些是需要保护的客体,进一步确定这些客体对应哪些数据结构,以及哪些系统函数对其进行了操作,在对所述客体进行访问的最终系统函数中,插入钩子(hook)函数截获访问,并通过另外一些钩子函数修改客体对应的数据结构,以满足安全机制的需要。其中,所述LSM截获点涉及系统函数或系统内核,与系统各种资源的访问有关,即,将系统中涉及资源访问的系统函数作为敏感或重要的系统函数,将调用这些系统函数的行为进一步作为程序行为控制点,即LSM控制点。因此,该方法用涉及系统资源访问的函数控制点作为判断待检测的程序行为是否正常的基础。这种方法有两个明显的缺陷,一是受系统的局限过大:由于不同的系统可能有不同的涉及资源操作的函数,该函数的数量、功能有较大差异,如果以一个特定系统的资源访问函数为基础判断待检测程序的行为会导致方法的通用性变差;二是对待检测程序的行为判断的准确性在满足通用性的前提下会有较大的下降:由于程序的不当行为可能涉及资源访问,也可能涉及其他方面,例如程序的强行捆绑,不当的写或移动操作等,单纯以资源访问等有限的函数作为程序行为控制点会产生较大的不当行为的遗漏,从而造成行为判断的准确性下降。
例如2:中国专利03811842.4和中国专利200510079861.4都是从单一的提取出病毒的指令代码,检测这些指令代码将这些指令代码中是否存在涉及到敏感操作的指令,根据检测情况,判断是否为病毒程序。
由于正常的应用程序或系统程序也都难免有涉及到敏感操作的行为和指令,因此上述例子中的技术方案造成根据程序行为来断定是否为病毒的准确性下降,误判断的情况也就经常的发生。
此外在现实中,计算机指令的操作有很多且复杂,相同的指令参量的不同也导致了执行结果的千差万别,因此仅仅是简单的依靠检测程序存在着敏感性的指令操作就判断是否为病毒,也是造成误判断的因素之一。
另外在实际应用中,也有人提出单纯采用虚拟技术来模拟程序的运行,这种技术方案对系统资源的耗费上产生了极大的开销,也是计算机使用者无法忍受的。
发明内容
鉴于上述的问题,本发明所要解决的是提供一种程序检测的方法、装置及程序分析的方法,所述的方法能够最初的先根据程序的指令、代码进行预判断并确定出程序的危险系数,然后根据危险系数采取不同的对程序的跟踪方式或者模拟运行,判断程序是否具有危害性。
为解决上述技术问题,本发明提供了一种程序检测的方法,包括:
获取待检测程序的运行过程或运行结果,形成程序的行为数据序列;
将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数;
根据所述危险系数,对所述待检测程序进行标识或记录。
所述的方法还包括:优化获取待检测程序的运行过程或运行结果,将优化后的数据形成程序的行为数据序列;
所述危险的程序行为数据序列库至少有一个,当所述危险的程序行为数据序列库存在有多个的时候,每一个危险的程序行为数据序列库中存储相同种类的危险的程序行为数据序列。
所述的方法还包括:根据所述待检测程序的危险系数的不同,对所述待检测程序进行等级分类。
所述的方法还包括:判断所述危险的程序行为数据序列库中是否有多个危险的程序行为数据序列中包含关键运行过程或运行结果;
如果是,则根据危险的程序行为数据序列确定出具有程度特征的比较结果。
所述的方法还包括:跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性。
所述的方法还包括:模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果结果,判断所述待检测程序是否具有危害性。
根据所述的模拟运行分解出所述待检测程序运行过程中的每一步指令以及指令的先后顺序。
本发明提供的一种程序检测的装置,包括:
输入单元,用于获取待检测程序的运行过程或运行结果,形成程序的行为数据序列;
预分析单元,用于将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数;
预处理单元,用于根据所述危险系数,对所述待检测程序进行标识或记录。
所述的装置还包括:优化单元,用于优化获取待检测程序的运行过程或运行结果,将优化后的数据形成程序的行为数据序列;
危险行为库单元,所述危险的程序行为数据序列库至少有一个,当所述危险的程序行为数据序列库存在有多个的时候,每一个危险的程序行为数据序列库中存储相同种类的危险的程序行为数据序列。
所述的装置还包括:跟踪检测单元,用于跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性。
所述的装置还包括:模拟运行检测单元,用于模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果结果,判断所述待检测程序是否具有危害性。
本发明提供的一种程序分析的方法,包括:
将待检测程序的代码与危害性的代码库进行比较,根据比较的结果,确定所述待检测程序的危险系数;
根据所述危险系数,对所述待检测程序进行标识或记录。
所述的程序分析方法还包括:
跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性;
模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果,判断所述待检测程序是否具有危害性。
与现有技术相比,本发明具有至少以下的优点:
预分析待检测程序,可以获得待检测程序的所有行为指令或者运行的结果,将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数,可以给待检测程序进行初步的危险程度的评估,避免了对所有的未检测过的程序都要进行详细的行为判断,从而造成系统资源的极大的浪费。根据所述危险系数,对所述待检测程序进行标识或记录,能够动态跟踪程序的运行,提高了对危害行程序的识别率以及降低了对正常程序的误杀率同时还能够更合理的安排对程序的检测过程,对于较低危险程度的程序,在不影响系统的安全的前提下准许其运行并对其进行实时的全程跟踪检测,在所述程序运行过程中一旦确定该程序是具有危害性的,立即阻止其继续运行并作出相应的处理,对于危险程度较高的程序,对其进行模拟运行,不但可以精确的判断出程序是否具有危害性,而且还能够最大限度的避免正常程序误被认为是危害性程序。
本发明还提供了一种程序检测的装置,所述装置可以给待检测程序进行初步的危险程度的评估,避免了对所有的未检测过的程序都要进行详细的行为判断,从而造成系统资源的极大的浪费,并且根据所述危险系数,对所述待检测程序进行标识或记录,能够动态跟踪程序的运行,提高了对危害行程序的识别率以及降低了对正常程序的误杀率同时还能够更合理的安排对程序的检测过程,对于较低危险程度的程序,在不影响系统的安全的前提下准许其运行并对其进行实时的全程跟踪检测,在所述程序运行过程中一旦确定该程序是具有危害性的,立即阻止其继续运行并作出相应的处理,对于危险程度较高的程序,对其进行模拟运行,不但可以精确的判断出程序是否具有危害性,而且还能够最大限度的避免正常程序误被认为是危害性程序。
本发明还提供的一种程序分析的方法,所述方法采用静态的方式利用危害程序的代码,可以更为快速的判断待检测程序是否为疑似的具有危害性的程序,并且给疑似的具有危害性的程序设定危险系数,并且根据所述危险系数,对所述待检测程序进行标识或记录。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明一种程序检测的方法的流程图;
图2是本发明一种程序检测的方法的运行示意;
图3是本发明对待检测程序预检测示意图;
图4是本发明危险系数的划分、危险系数等级的示意图;
图5是本发明关于程序行为与对应的代码及对应的运行结果示意图;
图6是系统功能调用表的结构示意图;
图7是系统功能调用程序实际存储区的示意图;
图8是图5所示的系统功能调用表存储有相应的控制处理程序时的结构示意图;
图9是图7所示存储实例的功能调用程序实际存储区的示意图;
图10是存储有所述控制处理程序的一个独立的操作行为调用表的结构示意图;
图11是将所有控制处理程序存储为另一个独立的操作行为调用表的结构示意图;
图12是获取病毒程序可执行的危害性行为操作流程图;
图13是虚拟运行环境的示意图;
图14是判断程序是否具有危害性的示意图;
图15是对程序进行逻辑识别并判断是否具有危害性的示意图。
具体实施方式
本发明的核心思想在于:获取待检测程序的运行过程或运行结果,形成程序的行为数据序列,将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数,根据所述危险系数,对所述待检测程序进行标识或记录,进而实现对于较低危险程度的程序,在不影响系统的安全的前提下准许其运行并对其进行实时的全程跟踪检测,对于危险程度较高的程序,对其进行模拟运行,从而达到提高了对危害行程序的识别率以及降低了对正常程序的误杀率,还可以避免在检测过程中造成系统资源的极大的浪费。
参照图1,是本发明一种程序检测的方法的步骤流程图,包括以下步骤:
步骤S1,获取待检测程序的运行过程或运行结果,形成程序的行为数据序列。技术人员通过对病毒等具有危害性程序的多年研究,发现病毒等具有危害性程序有一些共同的功能性数据序列(所述数据序列也可以当成病毒的行为或有效的指令代码),这些数据序列对应着相应的运行结果,获取这些数据序列可以借助于DEBUG等工具利用人工的方式,当然也可以让计算机自动地获取。所述的指令序列是具有一定的功能性的指令,如:复制,删除,查找等。
例1:假设在windows平台上,某一个带有专删除系统文件(c:\windows\regedit.exe)的病毒virus1,virus1要调用的函数是:
SOCKET(DEL(PATH(FILENAME(regedit.exe)))),
<DEL()是删除函数,PATH()是路径函数,FILENAME()是文件名称函数,SOCKET()是网络发送函数>,
virus1的有效的函数<DEL(PATH(FILENAME(regedit.exe)))>。
例2:假设病毒virus2指令代码:
A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15...An
其中指令:A2,A3,A5,A8,A9,A11,A12,A15对应逻辑上的功能函数是:
<DEL(PATH(FILENAME(regedit.exe)))>,
<DEL()是删除函数,PATH()是路径函数,FILENAME()是文件名称函数,SOCKET()是网络发送函数>,
那么,A2,A3,A5,A8,A9,A11,A12,A15是virus2的有效指令代码,其余的代码则是非重要的功能代码或无用的代码。
例3:假设病毒virus3的运行过程是:
第一步,利用FILENAME()函数确定要删除的文件是regedit.exe;
第二步,利用PATH()函数,确定regedit.exe的逻辑路径是c:\windows\regedit.exe;
第三步,利用DEL()函数删除c:\windows\regedit.exe。
病毒virus3完成上述三步要调用的函数是:
DEL(PATH(FILENAME(regedit.exe)))。
病毒virus3的行为是:
行为1:确定要删除的文件是regedit.exe;
行为2:确定regedit.exe的逻辑路径是c:\windows\regedit.exe;
行为3:删除c:\windows\regedit.exe。
那么,行为1→结果1=文件regedit.exe被确定;
行为2→结果2=文件regedit.exe的逻辑路径被确定;
行为3→结果3=文件regedit.exe被删除。
根据上述的行为:
行为1→结果1;行为2→结果2;行为3→结果3。
行为1+行为2+行为3→运行结果=结果1+结果2+结果3。
所述的运行结果是:导致系统内文件regedit.exe被病毒virus3删除。
以上只是提供了获取待检测程序的运行过程或运行结果,形成程序的行为数据序列的核心思想,在实际中技术人员可以依据行为作为数据序列的数据元素,也可以依据结果作为数据序列的数据元素,依据本发明的思想,技术人员可以选择,也属于本发明所述的范围内。
步骤S2,将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数。
技术人员可以通过多年的对病毒的研究经验,总结出涉及到对系统进行敏感性操作的数据序列,也就是对系统的敏感性指令操作。例如:非常规读写操作、删除某系统文件、导致内存冲突、破坏硬盘分区表等等。
下面列举一些可以用于监测病毒的行为:
1、占用INT13H(操作系统13H中断)
所有的引导型病毒都攻击BOOT(引导)扇区或主引导扇区。系统启动时,当BOOT扇区或主引导扇区中的主控程序获得执行控制权时,系统就开始工作。一般引导型病毒都会占用INT 13H中断操作,系统引导时其它系统功能调用函数还未设置好,无法利用。引导型病毒占据INT 13H中断的系统功能操作,在其中放置病毒程序的代码,即用病毒程序的代码获得或替换INT 13H中断的程序代码的控制权。
2、修改系统数据区的内存总量或覆盖区的地址范围,例如DOS系统。病毒常驻内存后,为了防止系统将其覆盖,必须修改内存总量。
3、对COM和EXE文件做写入动作。病毒要感染,而使病毒代码写入或嵌入COM和EXE文件的操作。
4、病毒程序与宿主程序的切换。染毒程序运行时,先运行病毒,而后执行宿主程序;在两者切换时,有一些典型的特征行为。
除了上述较为明显的破坏性操作行为,病毒程序一般还会包括较为正常的操作行为,如果这些操作行为单独或者组合起来有可能产生破坏数据的危险操作,则也属于本发明所述病毒程序的破坏性操作行为的范围内。
通常,一个病毒程序的破坏行为可以由一系列的执行破坏性操作的指令或指令集构成的,而且,每一个所述的指令或指令集至少产生一个独立的破坏性操作行为。因此,分解现有病毒程序的破坏性操作行为,即是将已经存在的病毒程序中包含的独立的破坏性操作行为涉及的指令或指令集提取出来。
设置危险程序行为数据序列库,将涉及到对系统敏感性的操作总结出来作为数据存储到所述的险程危序行为数据序列库中,并且将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较。
例4:假设13H中断的03H或05H号功能调用涉及可能的破坏数据的危险操作,则13H中断的03H或05H号功能调用对应的指令就可以被看作是产生一个独立的破坏性操作行为的指令。假设,10H中断的02H号功能调用和11H的06H号功能调用组合在一起涉及可能的破坏数据的危险操作,则10H中断的02H号功能调用和11H的06H号功能调用对应的指令集合就可以被看作是产生一个独立的破坏性操作行为的指令集,那么将上述的具有破坏性的指令集合(数据序列)存储到所述危险程序行为数据序列库中。
如果一个被检测的程序具有这样的指令代码,就可以得知该被检测程序存在一个可能破坏性其他程序或数据的可疑操作行为,将这些行为收集起来,就可以通过程序的行为集合判断一个程序是否具有可疑的危险性。
但是还有一些正常的程序,单从表象上观察,也涉及到了敏感的操作。
例5:有一个程序名为a.exe,该程序的运行过程是:读取USB接口的数据,将读出的数据发送到网络上的某一计算机、服务器中。(由于技术人员了解读取的详细技术过程和网络发送过程,因此在这里就不再叙述)从上述过程来看,类似于一种专门窃取银行给用户核发的USB电子证书的病毒。假设所述危险程序行为数据序列库中存储有关于上述数据序列的数据,如果仅仅是将上述的行为或者指令集合(数据序列)与所述危险程序行为数据序列库进行比较,那么就很容易造成对某些正常程序误判断成为病毒程序。如:招商银行专业版(招商银行专门为客户提供的一种网络银行程序)和工商银行网上银行控件程序等,上述银行的程序在进行运行的时候当涉及到要对用户持有的USB电子证书进行更新的时候或者用户进行某些网上银行操作的时候就要进行对USB设备的读取和网络发送等操作。如果仅是将上述的行为、指令操作当为危险操作,那么就会把银行的正常程序误判断成为病毒。为了解决这个问题,当某个程序进行了敏感的指令操作,技术人员可以依据经验对该程序进行设定危险系数,也可以设置一个处理程序由计算机自动的完成对待检测程序危险系数的设定。技术人员可以依据多年的经验,对待检测程序敏感性操作可能给系统带来的危害程度,进行危险系数的划分或危险系数等级的确定,如图2所示。
例6:在windows系统中一个名为B的程序,其功能是清除注册表中的冗余数据。
对程序B运行过程进行分解:
行为1=对注册表的所有数据进行读取(已涉及到注册表敏感信息的读取)
行为2=查找系统加载信息数据库
行为3=调取系统注册信息数据库
行为4=将注册表相关数据与系统加载信息数据库和系统注册信息数据库进行比较
行为5=清除注册表中多余出系统加载信息数据库和系统注册信息数据库所记载的数据
假设,行为1与行为5是危险程序行为数据序列库中记录的危险性数据序列(指令操作),根据上述运行过程可以看出,程序B所进行的指令操作涉及到了对系统的敏感操作,并且对注册表的所有数据进行读取(已涉及到注册表敏感信息的读取),技术人员知道注册表是windows系统的重要部分,注册表的变化会引起系统的诸多变化,由此可看出,行为1是一个可能对系统造成很大影响的前奏,因此给程序B设定危险系数,待进行下一步的检测或跟踪运行。
技术人员可以依据多年的经验,对待检测程序敏感性操作可能给系统带来的危害程度,进行危险系数的划分或危险系数等级的确定,当然,也可以采用其他的本领域内技术人员熟悉的方法,达到对待检测程序进行危险系数的划分或危险系数等级的确定之目的,所以本文在此不对具体的方法进行限制。
步骤S3,根据所述危险系数,对所述待检测程序进行标识或记录。
技术人员可以依据多年的经验或者实际情况,对待检测程序敏感性操作可能给系统带来的危害程度,进行危险系数的划分或危险系数等级的确定,并且根据情况采用另外的方式对危险系数进行划分或对危险系数等级进行标识或者记录。例如:记录待检测程序的进程名称或者待检测程序的特征信息等。当然,也可以采用其他的本领域内技术人员熟悉的方法达到对所述待检测程序进行标识或记录的目的,无论采用哪种方式对待检测程序进行标识或记录,只要达到能够在预检测阶段将疑似危害性的程序与正常合法的程序区分开,就是本发明的构思,所以本文在此不对具体标识或记录的方法进行限制。
根据对所述待检测程序进行标识或记录,确定对所述待检测程序的下一步处理方案,具体的处理方案详情见下文。
以windows操作系统为例,假设对所述危险系数分为三类:
危险系数0:0;
危险系数1:1(1),1(2)...1(n);
危险系数2:2(1),2(2)...2(n)。
对所述危险等级分为三类:没有危险;一般危险;很危险。
上述“危险系数0”对应的危险等级:没有危险;
上述“危险系数1”对应的危险等级:一般危险;
上述“危险系数2”对应的危险等级:很危险。
其中上述“危险系数0”中的“0”=待检测程序没有危险;
其中上述“危险系数1”中的“1(1)”=涉及到对注册表的操作;
其中上述“危险系数1”中的“1(2)”=更改系统的配置文件;
其中上述“危险系数2”中的“2(1)”=删除、更改系统内文件;
其中上述“危险系数2”中的“2(2)”=非正常的读取、拷贝数据。
例7:程序A是一种专门窃取银行给用户核发的USB电子证书的病毒,该病毒的功能是窃取USB电子证书内的数字证书,并将窃取的数字证书发送到远端计算机上。
程序A调取的函数依次是:
第一步:调取函数open(),此函数是调取USB端口;
第二步:调取函数read(),此函数是强行读取USB设备内的数据;
第三步;调取函数save(),此函数是将USB设备内的数据进行临时存储;
第四步:调取函数net(),此函数是网络数据发送函数;
第五步:调取函数nets(),此函数是数据发送套接函数。
函数说明:
1.函数read()和nets()是程序A的自带函数,其余的函数均是系统内函数。
2.因为操作系统安全机制禁止非授权的对设备的数据读取,所以程序A为了能够获取USB设备中的数据,自带函数read(),以达到强行读取USB设备中数据的目的。
3.因为操作系统安全机制禁止非授权的对代发送数据进行套接,所以程序A自带函数nets()。
程序A的行为依次是:
行为1=调取USB端口;
行为2=强行读取USB设备内的数据;
行为3=将USB设备内的数据进行临时存储;
行为4=调用网络发送函数;
行为5=传送USB设备内的数据。
获取的程序A的运行过程是:行为1+行为2+行为3+行为4+行为5
在本例中,程序A的运行过程涉及到了对数据的强行读取,即:非正常的读取、拷贝数据,根据上述所述的危险系数,程序A的运行过程含有所述的“危险系数2”中的“2(2)”=非正常的读取、拷贝数据,因此可以认为程序A对应的危险等级是“很危险”。
另外,技术人员还可以利用DEBUG等工具打印出来待检测程序的代码,然后利用技术人员的经验或者通过测试、分析,将具有危害性的代码总结出来,并且根据危害性进行危险系数的划分或危险系数等级的确定,当发现待检测程序包含有所述的具有危害性的代码,根据所述的危害性代码的危害性设定危险系数,技术人员也可以编制对应的检测程序由计算机自动完成此过程。
例8:在例7中,参照图5,假设程序A的代码是:A0 A1 A2 A3 A4 A5 A6 A7 A8 A9;
代码A4对应着行为2;代码A5对应着行为3;
其中,代码A4和代码A5是技术人员总结出来的具有危害性的代码,程序A的代码包含涉及到了对数据的强行读取的代码,即:非正常的读取、拷贝数据,根据上述所述的危险系数,程序A的含有所述的“危险系数2”中的“2(2)”=非正常的读取、拷贝数据,因此可以认为程序A对应的危险等级是“很危险”。
根据例7与例8,参照图5,对程序A进行标识或记录,并根据本发明确定程序A的下一步处理方案,详见下文。
步骤S4,对于已被标识或记录的程序根据危险系数选择检测方式。
情况1:步骤S5.1,跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性。
建立一个危害性结果信息数据库,技术人员可以通过经验或分析并总结出危害性程序的运行过程及对应的运行结果,将所述危害性程序运行过程对应的运行结果存入所述危害性结果信息数据库。
例AA:危害性行为→危害性结果;
危害性行为1→危害性结果1+危害性行为2→危害性结果2+危害性行为3→危害性结果3+危害性行为4→危害性结果4......+危害性行为n→危害性结果n(n为正整数且大于0);
危害性结果1+危害性结果2+危害性结果3......+危害性结果n=最终的危害性结果。
在步骤S4中,待检测程序的运行结果是:结果1+结果2+结果3+结果4+结果5;
所述危害性结果信息数据库中的其中一项存储数据是:
危害性结果2+危害性结果3+危害性结果4;
结果2=危害性结果2;结果3=危害性结果3;结果4=危害性结果4;
当所述的待检测程序运行到结果3时即可判断该待检测程序具有危害性。
对于危险系数或危险等级较低(见例9.0)的待检测程序,可以采用跟踪的方式监测待检测程序的运行,当发现待检测程序具有危害性时立即终止其运行。
例9.0:以windows操作系统为例,假设对所述危险系数分为三类:
危险系数0:0;
危险系数1:1(1),1(2)...1(n);
危险系数2:2(1),2(2)...2(n)。
对所述危险等级分为三类:没有危险;一般危险;很危险。
上述“危险系数0”对应的危险等级:没有危险;
上述“危险系数1”对应的危险等级:一般危险;
上述“危险系数2”对应的危险等级:很危险。
其中上述“危险系数0”中的“0”=待检测程序没有危险;
其中上述“危险系数1”中的“1(1)”=涉及到对注册表的操作;
其中上述“危险系数1”中的“1(2)”=更改系统的配置文件;
其中上述“危险系数2”中的“2(1)”=删除、更改系统内文件;
其中上述“危险系数2”中的“2(2)”=非正常的读取、拷贝数据。
例9.1:在windows系统中一个名为C的程序,其功能是清除注册表中的冗余数据。
程序C的行为:行为1+行为2+行为3+行为4+行为5
其中,行为4=调用注册表定位函数;
参照例9.0所示,预检测阶段发现该程序C有涉及到注册表的操作,因此程序C的危险等级是“一般危险”,由于调取注册表函数虽然属于是敏感性的操作,但并非该操作都是对系统的危害,则让程序继续的运行并监控其运行;
对程序C运行过程进行分解:
行为1=对注册表的所有数据进行读取(已涉及到注册表敏感信息的读取)
行为2=查找系统加载信息数据库
行为3=调取系统注册信息数据库
行为4=将注册表相关数据与系统加载信息数据库和系统注册信息数据库进行比较
行为5=清除注册表中多余出系统加载信息数据库和系统注册信息数据库所记载的数据
程序C的运行结果:结果1+结果2+结果3+结果4+结果5=最终运行结果
所述危害性结果信息数据库中与程序C最为相近的(但不同的)一项存储数据是:
危险性结果1+危险性结果2+危险性结果3;
其中,危险性结果1=结果1;危险性结果2=结果3;危险性结果3不等于程序C的任意项结果;
结合本发明的上述例3和例AA,在程序C的运行过程中,并未发现对系统造成危害的结果,故认为程序C不具有危害性。
例9.2:参照例9.0和图5,假设在windows平台上有一个名为D的程序,该程序D专门删除系统文件(c:\windows\regedit.exe),所述程序D要调用的函数是:
SOCKET(DEL(PATH(FILENAME(regedit.exe)))),
<DEL()是删除函数,PATH()是路径函数,FILENAME()是文件名称函数,SOCKET()是网络发送函数>,
程序D的有效的函数<DEL(PATH(FILENAME(regedit.exe)))>,
因此程序D的危险等级是“一般危险”。
假设程序D的代码:
A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15...An
其中指令:A2,A3,A5,A8,A9,A11,A12,A15对应逻辑上的功能函数是:
<DEL(PATH(FILENAME(regedit.exe)))>,
<DEL()是删除函数,PATH()是路径函数,FILENAME()是文件名称函数,SOCKET()是网络发送函数>,
那么,A2,A3,A5,A8,A9,A11,A12,A15是程序D的有效指令代码,其余的代码则是非重要的功能代码或无用的代码,根据程序D有效的代码,也可以认为程序D的危险等级是“一般危险”。
假设程序D的运行过程是:
第一步,利用FILENAME()函数确定要删除的文件是regedit.exe;
第二步,利用PATH()函数,确定regedit.exe的逻辑路径是c:\windows\regedit.exe;
第三步,利用DEL()函数删除c:\windows\regedit.exe。
程序D完成上述三步要调用的函数是:
DEL(PATH(FILENAME(regedit.exe)))。
程序D的行为是:
行为1:确定要删除的文件是regedit.exe;
行为2:确定regedit.exe的逻辑路径是c:\windows\regedit.exe;
行为3:删除c:\windows\regedit.exe。
那么,行为1→结果1=文件regedit.exe被确定;
行为2→结果2=文件regedit.exe的逻辑路径被确定;
行为3→结果3=文件regedit.exe被删除。
根据上述的行为:
行为1→结果1;行为2→结果2;行为3→结果3。
行为1+行为2+行为3→运行结果=结果1+结果2+结果3。
所述的运行结果是:导致系统内文件regedit.exe被程序D删除。
根据程序D运行结果,也可以认为程序D的危险等级是“一般危险”。
根据本例中针对程序D的三种分析:调用函数分析、代码分析、行为分析都可以直接得到程序D的运行结果,按照本发明介绍的方法将程序D的运行结果与所述危害性结果信息数据库进行比较:
假设危害性结果信息数据库中存储的数据包含程序D的结果1+结果2+结果3,
本例中结合例AA所说明的方式,在继续跟踪了程序D的运行,发现其的确将要涉及对系统的危害性操作,故在其进行删除所述的系统文件前拦截程序D的危害性操作。
所述危害性结果信息数据库可以通过上述的人工分析过程或者计算机分析过程得出,也可以直接采用现有的对病毒程序的行为分析结果。
将获得的所述待检测程序的行为数据或行为数据集合,与预置的病毒程序的运行结果数据或者运行结果数据集合进行比较,就可以判断出所述待检测程序是否具有危害性。当然,也可以采用其他本领域技术人员熟悉的分析方法,达到判断所述待检测程序是否为病毒程序之目的。所述判断所采用的规则可以是本领域技术人员根据经验得出的,可能存在相当的差异,当然,这些规则都可以给出所述待检测程序是病毒程序或者不具有危害性的判断结果,只不过判断的准确度有一些差异而已。而且由于采用的分析方法的不同肯定会导致判断采用的规则有所不同,所以本文在此不对采用的分析方法和判断的规则作一定的限制,只要利用了本实施例所述的行为数据比较的方式就在本发明的构思之内。以下已一种判断规则进行说明。
可以通过人工或者计算机分析的过程,对已知的病毒程序进行分析,得出已知病毒的运行过程、运行结果或者其集合,并可以将所述运行结果存储到危害性结果信息数据库。所述危害性结果信息数据库中存储的是各种具有危害性的程序的一系列行为操作所对应的运行结果,所述病毒程序的运行过程以及运行结果还可以是经过技术人员依一定规则选出的,例如:选择病毒程序要实施破坏时经常执行的操作行为数据。例如采用13H中断写磁盘的操作,是病毒程序的共同行为,而且比较特殊。经过操作行为数据的选择,危害性结果信息数据库可以存储较少的用于判断未知程序的数据量,从而提高程序行为数据的比较速率。当然,也可以通过计算机对已知型病毒程序进行自动分析,记录所述的具有危害性程序的所有运行过程对应的运行结果,或者通过计算机按照预定义的规则对所述病毒程序的行为数据进行筛选记录。这样,将所述待检测程序的行为数据和危害性结果信息数据库中的数据进行比较,就能够判断出所述待检测程序是否为病毒程序。
步骤S4,对于已被标识或记录的程序根据危险系数选择检测方式。
情况2:步骤S5.2,模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果,判断所述待检测程序是否具有危害性。
参照图13所示,设置一个虚拟运行的环境,I/O逻辑接口将虚拟运行环境和操作系统逻辑隔离,实现把现实操作系统的数据经过逻辑格式转换送入虚拟运行环境,并且将虚拟运行环境要返回出的信息通过逻辑格式转换的逆转换传出到现实操作系统。
对文件或程序的行为进行触发、诱导、记录和返回:虚拟运行环境虚拟了一个操作系统,让待检查的文件或程序进入到这个虚拟的操作系统里进行模拟运行,从而达到真实的发现文件或程序的所有行为,并且记录后通过I/O逻辑接口将记录下来的行为返回的过程。以下列举一个“进行密码试探攻击”的程序来说明该程序在“虚拟运行环境”中模拟运行,被触发、诱导、记录和返回的过程,此过程用windows操作系统为例:
例10:当某个程序(以下简称:该程序)利用IPC对guest和administrator等帐号进行密码试探,如果试探成功,则将自己复制到对方系统中的system32目录里,然后注册成为系统服务。虚拟运行环境根据自定义好的操作系统关键功能调用列表立刻识别出该程序正在用IPC,这时“虚拟运行环境”模拟实际中的操作系统给该程序一个IPC回应并且返回密码认证成功的信号(这个过程是个模拟的、假的过程,目的是诱导该程序的下一个行为),同时记录该程序的此项行为。以此类推,将所有的行为记录完成后,将这些行为信息通过I/O逻辑接口传出。
根据某程序行为的信息并且经过对程序行为的比对过程、逻辑分析过程、逻辑推理过程与逻辑判断过程,从而达到针对危害行程序的识别全过程,是由两个功能模块组成,即:“模糊识别模块”和“精确识别模块”。
模糊识别模块:
模糊识别的概念:在特征码识别模块识别之后,将程序放入虚拟运行环境运行,运行后的结果作为模糊识别的识别线索。将程序的运行结果即程序的行为作为模糊识别的原则。
模糊识别的作用:以行为作为判断程序是否为病毒的原则以特殊的判定算法来判断典型病毒行为的病毒程序。
模糊识别是将程序在虚拟运行环境中程序运行的行为结果与“有害行为库”相比较,以此作为识别的原则。
“有害行为库”中存储的是各种典型危害性程序的一系列行为,而这种危害性程序的行为是危害性程序要实施破坏的经常执行的行为。当可疑程序的行为指标与“有害行为库”中的典型病毒行为相类似,则直接认为可疑程序就是已知病毒类型的一个变种。
当可疑程序的行为符合一部分典型病毒的行为则用特别的判断算法综合判定可疑程序的性质,当不能判断时则由精确识别程序继续处理。
例10.1:某可疑程序在虚拟运行环境中运行后得到的行为指标为:
行为1、行为2、行为3、行为4、行为5、行为6、行为7、行为8
在“有害行为库”中某典型病毒类的系列行为为:
行为2、行为3、行为4、行为5、行为6
当比较之后得出了可疑程序行为完全包含了某典型病毒类的行为特征,则可直接判断此可疑程序是某典型病毒类的一个变种,直接由执行杀毒引擎处理。
例10.2:另一个可疑程序在虚拟运行环境中运行后得到的行为指标为:
行为1、行为2、行为3、行为4
在“有害行为库”中某典型病毒类的系列行为为:
行为2、行为3、行为4、行为5、行为6
当可疑程序只具有某种典型病毒类的系列行为的一部分则不能直接判断可疑程序的性质,将可疑程序的行为指标和程序参数传给精确识别模块进一步判断。
例10.3:某可疑程序在虚拟运行环境中运行后得到的行为指标为:
行为-1、行为-2、行为-3
在“有害行为库”中有害行为为:
行为1、行为2、行为3、行为4、行为5、行为6……行为n(n为自然数)
当可疑程序的行为不符合有害行为库中的任何一条则直接放行,认为可疑程序合法。
精确识别模块:
参照图14,该识别过程并非像“模糊识别过程”所用的都是“对比”或“比较”的识别原理。精确识别过程是一个分析、推理和判断的全智能过程,这实际是一个“逻辑推理”过程。精确识别过程是以“经验库”和“原则库”为线索,并且采取一套逻辑分析和逻辑推理为过程,然后再得出一个判断结果,根据判断结果判断是否为病毒。
经验库:经验库是用来存储病毒的“一个行为导致的结果”或“多个行为按照先后顺序依次完成后导致的结果”的“行为逻辑推理表达式”或“离散数学表达式”(无论是哪种表达式实际上都是说明从行为到结果的过程,每一个表达式都是经验库中的一个存储元素,经验库中存储的所有表达式构成了一个整体的集合)的集合。
例:10.4:行为逻辑推理表达式:(行为A)与(行为B)导致(结果AB),以实际事件举例说明:“自动查找a.exe文件的文件位置,然后将a.exe文件的文件位置添加到注册表相应的启动项里,让操作系统启动后自动运行a.exe文件。”
(行为A)=自动查找a.exe文件的文件位置;
(行为B)=将a.exe文件的文件位置添加到注册表相应的启动项里;
(结果AB)=操作系统启动后自动运行a.exe文件。
原则库:原则库是用来存储计算机系统被病毒破坏后的恶性结果(每一个结果都是原则库中的一个存储元素,原则库中存储的所有结果构成了一个整体的集合)的集合。
如:删除某系统文件、导致内存冲突、破坏硬盘分区表等。
识别过程(情况1):将“虚拟运行环境”发现的某文件或程序的单一或一系列行为按照其顺序进行排列
<如:(行为A)与(行为B)...与(行为N)>
然后与经验库中的存储元素的部分信息(指的是:“行为逻辑推理表达式”里“导致”字段前的信息)进行比对,将与之匹配的“行为逻辑推理表达式”的“结果”部分的信息(指的是:“行为逻辑推理表达式”里“导致”字段后的信息)按照其顺序进行排列
<如:(结果A)与(结果B)与...(结果N)>
根据“结果”的不同组合与排列从而达到识别病毒的目的。要注意:根据人为的经验,总结出了一套“特殊组合排列集合”,如果某程序的行为导致的结果,将这些结果进行组合排列,如果组合排列后符合这个“特殊组合排列集合”里的任何一个子集,则都可以判断为具有危害性。
例10.5:参照图15,假定某一个病毒的特点:自动查找a.exe文件的文件位置,然后将a.exe文件的文件位置添加到注册表相应的启动项里,让操作系统启动后自动运行a.exe文件。
那么:自动查找a.exe文件的文件位置(此为:行为A)导致获取了a.exe文件的文件位置(此为:结果A),将a.exe文件的文件位置添加到注册表相应的启动项里(此为:行为B)导致让操作系统启动后自动运行a.exe文件(此为:结果B)
行为逻辑推理表达式1:(行为A)导致(结果A)
行为逻辑推理表达式2:(行为B)导致(结果B)
<假定“行为逻辑推理表达式1”和“行为逻辑推理表达式2”都是经验库中的存储元素,假定(结果A)与(结果B)的组合排列是“特殊组合排列集合”里的其中一个子集>
“行为”与“经验库”里的存储元素进行比对的过程:
<(行为A)>等同于<行为逻辑推理表达式1的部分信息(指的是:行为逻辑推理表达式1里“导致”字段前的信息)>
<(行为B)>等同于<行为逻辑推理表达式2的部分信息(指的是:行为逻辑推理表达式2里“导致”字段前的信息)>
“结果”<指的是:“行为逻辑推理表达式”的“结果”部分的信息(指的是:行为逻辑推理表达式里“导致”字段后的信息)>,将“结果”依照顺序进行组合排列得到:
(结果A)与(结果B)
<假定(结果A)与(结果B)的组合排列是“特殊组合排列集合”里的其中一个子集>
(结果A)与(结果B)的组合排列是“特殊组合排列集合”里的其中一个子集,因此可以判断程序具有危害性。
另外,将“虚拟运行环境”发现的某文件或程序的单一或一系列行为按照其顺序进行排列,如:
<(行为A)与(行为B)...与(行为N)>,然后与经验库中的存储元素的部分信息(指的是:行为逻辑推理表达式里“导致”字段前的信息)进行比对,将与之匹配的行为逻辑推理表达式的“结果”部分的信息(指的是:行为逻辑推理表达式里“导致”字段后的信息)再与原则库中的存储元素进行比较、分析处理和判断(比较、分析处理和判断过程的实例说明见下例),从而达到识别病毒的目的。要注意:如果有一个符合原则库中的任何一个存储元素,就可以判断为病毒。
例10.6:假定某一个病毒的特点:自动查找a.exe文件的文件位置,然后将a.exe文件的文件位置添加到注册表相应的启动项里,让操作系统启动后自动运行a.exe文件。
自动查找a.exe文件的文件位置”(此为:行为A)导致获取了a.exe文件的文件位置,(此为:结果A),“将a.exe文件的文件位置添加到注册表相应的启动项里”(此为:行为B)导致让操作系统启动后自动运行a.exe文件(此为:结果B);
行为逻辑推理表达式1:(行为A)导致(结果A)
行为逻辑推理表达式2:(行为B)导致(结果B)
<假定“行为逻辑推理表达式1”和“行为逻辑推理表达式2”都是经验库中的存储元素,假定(结果B)是原则库中的一个存储元素>
“行为”与“经验库”里的存储元素进行比对的过程:
<(行为A)>等同于<行为逻辑推理表达式1的部分信息(指的是:“行为逻辑推理表达式1”里“导致”字段前的信息)>
<(行为B)>等同于<行为逻辑推理表达式2的部分信息(指的是:“行为逻辑推理表达式2”里“导致”字段前的信息)>
“结果”<指的是:“行为逻辑推理表达式”的“结果”部分的信息(指的是:“行为逻辑推理表达式”里“导致”字段后的信息)>与“原则库”里的存储元素进行比对过程:
<(结果A)不等同于“原则库”中的任何一个存储元素>;
<(结果B)等同于“原则库”中的其中一个存储元素>。
则:
(结果A)不是“原则库”中的任何一个存储元素;
(结果B)是“原则库”中的其中一个存储元素;
(结果A)是(结果B)成立的前提条件。
经过判断,程序具有危害性。
虽然(结果A)不是“原则库”中的任何一个存储元素,但是(结果B)是“原则库”中的其中一个存储元素,所以判断“是危害行程序”。
以上的过程同样可以采用技术人员熟悉的办法,如:采用申请号为01117726.8、名称为“检测和清除已知及未知计算机病毒的方法、系统和介质”的中国发明专利介绍的,以提供用于诱发病毒感染的感染对象来检测病毒的方法,就可以获得已知和未知病毒程序的破坏性操作行为。由于申请号为01117726.8的发明已经公开,在此不在赘述。
以上对本发明所提供的一种程序检测的方法、装置及程序分析的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种程序检测的方法,其特征在于,包括:
获取待检测程序的运行过程或运行结果,形成程序的行为数据序列;
将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数;
根据所述危险系数,对所述待检测程序进行标识或记录。
2.根据权利要求1所述的程序检测的方法,其特征在于,包括:
优化获取待检测程序的运行过程或运行结果,将优化后的数据形成程序的行为数据序列;
所述危险的程序行为数据序列库至少有一个,当所述危险的程序行为数据序列库存在有多个的时候,每一个危险的程序行为数据序列库中存储相同种类的危险的程序行为数据序列。
3.根据权利要求1或2所述的程序检测的方法,其特征在于:根据所述待检测程序的危险系数的不同,对所述待检测程序进行等级分类。
4.根据权利要求1、2或3所述的程序检测的方法,其特征在于,还包括:
判断所述危险的程序行为数据序列库中是否有多个危险的程序行为数据序列中包含关键运行过程或运行结果;
如果是,则根据危险的程序行为数据序列确定出具有程度特征的比较结果。
5.根据权利要求1、2、3或4所述的程序检测的方法,其特征在于还包括:跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性。
6.根据权利要求1、2、3、4或5所述的程序检测的方法,其特征在于还包括:模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果,判断所述待检测程序是否具有危害性。
7.根据权利要求6所述的程序检测的方法,其特征在于,根据所述的模拟运行分解出所述待检测程序运行过程中的每一步指令以及指令的先后顺序。
8.一种程序检测的装置,其特征在于,包括:
输入单元,用于获取待检测程序的运行过程或运行结果,形成程序的行为数据序列;
预分析单元,用于将所述程序的行为数据序列与危险程序行为数据序列库中存储的数据进行比较,根据比较的结果,确定所述待检测程序的危险系数;
预处理单元,用于根据所述危险系数,对所述待检测程序进行标识或记录。
9.根据权利要求8所述的程序检测的装置,其特征在于,包括:
优化单元,用于优化获取待检测程序的运行过程或运行结果,将优化后的数据形成程序的行为数据序列;
危险行为库单元,所述危险的程序行为数据序列库至少有一个,当所述危险的程序行为数据序列库存在有多个的时候,每一个危险的程序行为数据序列库中存储相同种类的危险的程序行为数据序列。
10.根据权利要求8或9所述的程序检测的装置,其特征在于,包括:跟踪检测单元,用于跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性。
11.根据权利要求8或9所述的程序检测的装置,其特征在于,包括:模拟运行检测单元,用于模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果结果,判断所述待检测程序是否具有危害性。
12.一种程序分析的方法,其特征在于,包括:
将待检测程序的代码与危害性的代码库进行比较,根据比较的结果,确定所述待检测程序的危险系数;
根据所述危险系数,对所述待检测程序进行标识或记录。
13.根据权利要求12所述的程序分析的方法,其特征在于,包括:
跟踪监测已经做了标识或记录的程序或者满足某种标识或记录条件的程序,并根据监测最终或中间结果判断所述待检测程序是否具有危害性;
模拟运行已经做了标识或记录的程序或者满足某种标识或记录条件的程序,根据模拟运行最终或中间结果,判断所述待检测程序是否具有危害性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007102029413A CN101183414A (zh) | 2007-12-07 | 2007-12-07 | 一种程序检测的方法、装置及程序分析的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007102029413A CN101183414A (zh) | 2007-12-07 | 2007-12-07 | 一种程序检测的方法、装置及程序分析的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101183414A true CN101183414A (zh) | 2008-05-21 |
Family
ID=39448685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007102029413A Pending CN101183414A (zh) | 2007-12-07 | 2007-12-07 | 一种程序检测的方法、装置及程序分析的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101183414A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102034047A (zh) * | 2010-12-21 | 2011-04-27 | 姚志浩 | 一种计算机病毒自动防护方法 |
CN103177214A (zh) * | 2011-12-23 | 2013-06-26 | 宇龙计算机通信科技(深圳)有限公司 | 恶意软件的检测方法、系统及通信终端 |
CN103886253A (zh) * | 2014-03-26 | 2014-06-25 | 香港中文大学深圳研究院 | 一种检测数据泄漏的方法、设备及系统 |
CN104850775A (zh) * | 2014-02-14 | 2015-08-19 | 北京奇虎科技有限公司 | 一种应用程序安全性的鉴定方法和装置 |
CN104966018A (zh) * | 2015-06-18 | 2015-10-07 | 华侨大学 | 基于Windows系统的软件程序异常行为分析方法 |
CN105760761A (zh) * | 2016-02-04 | 2016-07-13 | 中国联合网络通信集团有限公司 | 软件行为分析方法和装置 |
CN105912932A (zh) * | 2016-04-08 | 2016-08-31 | 周宏斌 | 一种威胁行为检测系统和方法 |
CN106204047A (zh) * | 2016-06-30 | 2016-12-07 | 成都生辉电子科技有限公司 | 一种移动终端支付装置 |
CN106709338A (zh) * | 2016-05-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN107122164A (zh) * | 2017-03-31 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 函数地址获取及应用其的方法、装置、设备及存储介质 |
CN108038371A (zh) * | 2012-10-19 | 2018-05-15 | 迈克菲有限公司 | 用于移动计算设备的数据丢失防护 |
CN108256329A (zh) * | 2018-02-09 | 2018-07-06 | 杭州奇盾信息技术有限公司 | 基于动态行为的细粒度rat程序检测方法、系统及相应的apt攻击检测方法 |
CN109302402A (zh) * | 2018-10-26 | 2019-02-01 | 北京芯盾时代科技有限公司 | 一种行为检测方法及装置 |
CN109992501A (zh) * | 2017-12-29 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 小程序的可用性检查、可用小程序列表生成方法和装置 |
-
2007
- 2007-12-07 CN CNA2007102029413A patent/CN101183414A/zh active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102034047B (zh) * | 2010-12-21 | 2012-10-17 | 姚志浩 | 一种计算机病毒自动防护方法 |
CN102034047A (zh) * | 2010-12-21 | 2011-04-27 | 姚志浩 | 一种计算机病毒自动防护方法 |
CN103177214B (zh) * | 2011-12-23 | 2016-02-10 | 宇龙计算机通信科技(深圳)有限公司 | 恶意软件的检测方法、系统及通信终端 |
CN103177214A (zh) * | 2011-12-23 | 2013-06-26 | 宇龙计算机通信科技(深圳)有限公司 | 恶意软件的检测方法、系统及通信终端 |
CN108038371A (zh) * | 2012-10-19 | 2018-05-15 | 迈克菲有限公司 | 用于移动计算设备的数据丢失防护 |
CN104850775A (zh) * | 2014-02-14 | 2015-08-19 | 北京奇虎科技有限公司 | 一种应用程序安全性的鉴定方法和装置 |
CN103886253B (zh) * | 2014-03-26 | 2018-01-19 | 香港中文大学深圳研究院 | 一种检测数据泄漏的方法、设备及系统 |
CN103886253A (zh) * | 2014-03-26 | 2014-06-25 | 香港中文大学深圳研究院 | 一种检测数据泄漏的方法、设备及系统 |
CN104966018A (zh) * | 2015-06-18 | 2015-10-07 | 华侨大学 | 基于Windows系统的软件程序异常行为分析方法 |
CN105760761A (zh) * | 2016-02-04 | 2016-07-13 | 中国联合网络通信集团有限公司 | 软件行为分析方法和装置 |
CN105912932A (zh) * | 2016-04-08 | 2016-08-31 | 周宏斌 | 一种威胁行为检测系统和方法 |
CN106709338A (zh) * | 2016-05-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN106204047A (zh) * | 2016-06-30 | 2016-12-07 | 成都生辉电子科技有限公司 | 一种移动终端支付装置 |
CN107122164A (zh) * | 2017-03-31 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 函数地址获取及应用其的方法、装置、设备及存储介质 |
CN109992501A (zh) * | 2017-12-29 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 小程序的可用性检查、可用小程序列表生成方法和装置 |
CN108256329A (zh) * | 2018-02-09 | 2018-07-06 | 杭州奇盾信息技术有限公司 | 基于动态行为的细粒度rat程序检测方法、系统及相应的apt攻击检测方法 |
CN108256329B (zh) * | 2018-02-09 | 2022-06-17 | 杭州义盾信息技术有限公司 | 基于动态行为的细粒度rat程序检测方法、系统及相应的apt攻击检测方法 |
CN109302402A (zh) * | 2018-10-26 | 2019-02-01 | 北京芯盾时代科技有限公司 | 一种行为检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101183414A (zh) | 一种程序检测的方法、装置及程序分析的方法 | |
US8732824B2 (en) | Method and system for monitoring integrity of running computer system | |
Egele et al. | A survey on automated dynamic malware-analysis techniques and tools | |
US9418227B2 (en) | Detecting malicious software | |
RU2691187C1 (ru) | Система и способы аудита виртуальной машины | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
CN103620613B (zh) | 用于基于虚拟机监视器的反恶意软件安全的系统和方法 | |
US20160021174A1 (en) | Computer implemented method for classifying mobile applications and computer programs thereof | |
US20020162015A1 (en) | Method and system for scanning and cleaning known and unknown computer viruses, recording medium and transmission medium therefor | |
Ho et al. | PREC: practical root exploit containment for android devices | |
US20090217377A1 (en) | Method and system for monitoring system memory integrity | |
US9804948B2 (en) | System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing | |
Zakeri et al. | A static heuristic approach to detecting malware targets | |
CN102034050A (zh) | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 | |
Rhee et al. | Kernel malware analysis with un-tampered and temporal views of dynamic kernel memory | |
Surendran et al. | On existence of common malicious system call codes in android malware families | |
CN105683985B (zh) | 用于虚拟机内省的系统、方法及非暂时性计算机可读介质 | |
US20160092313A1 (en) | Application Copy Counting Using Snapshot Backups For Licensing | |
Yin et al. | Automatic malware analysis: an emulator based approach | |
US8756695B1 (en) | Analysis of binary code | |
US20230169178A1 (en) | Vulnerability analysis of a computer driver | |
CN113010268B (zh) | 恶意程序识别方法及装置、存储介质、电子设备 | |
Zeng et al. | Automatic uncovering of tap points from kernel executions | |
CN100373287C (zh) | 检测程序操作行为的方法及病毒程序检测、清除方法 | |
Yi et al. | DADE: a fast data anomaly detection engine for kernel integrity monitoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080521 |