CN101211388B - 产生及利用特征码以监测程序的装置及方法 - Google Patents
产生及利用特征码以监测程序的装置及方法 Download PDFInfo
- Publication number
- CN101211388B CN101211388B CN200610167325A CN200610167325A CN101211388B CN 101211388 B CN101211388 B CN 101211388B CN 200610167325 A CN200610167325 A CN 200610167325A CN 200610167325 A CN200610167325 A CN 200610167325A CN 101211388 B CN101211388 B CN 101211388B
- Authority
- CN
- China
- Prior art keywords
- return address
- application programming
- programming interfaces
- program
- condition code
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种产生及利用特征码以监测程序的装置及方法。本发明先于安全可信赖的环境执行该程序,并通过应用程序接口呼叫该程序所欲呼叫的函式,再根据该应用程序接口的返回地址产生该特征码。之后,当该程序再次执行时,便可利用该特征码进行监测。通过上述的设置及步骤,本发明可达到动态监测该应用程序的接口,因此适用于所有的执行文件,包括动态加载的外挂程序等。因此,本发明所提供的技术与已有技术相比更为完善。此外,本发明所需监测的应用程序接口的数目更少,因此可减少系统的负担。
Description
技术领域
本发明涉及一种监测程序的装置及方法;尤其涉及一种利用应用程序接口侦测(Application Program Interface Hooking;简称API Hooking)技术以监测程序的装置及方法。
背景技术
由于因特网的普及,近年来计算机病毒的发展也以可在因特网间传递的蠕虫及特洛伊木马程序等为主。在微软窗口操作系统环境中,这些蠕虫及特洛伊木马程序主要是趁执行中的程序发生缓冲区溢位(bufferoverflow)的问题时,或趁系统呼叫应用程序接口(Application ProgramInterface;简称API)时,取得对程序的控制权,进而破坏整个计算机的运行。
图1A是描述程序(source function)111呼叫目标应用程序接口112的已有技术的示意图。图中箭头所指的方向代表函式间呼叫的方向。由箭头113、114分别可知,程序111直接呼叫目标应用程序接口112,而目标应用程序接口112执行完后亦直接返回程序111。
现行的防毒软件都是在发生第一次灾情之后,找出并记录蠕虫及特洛伊木马程序等病毒的特征,再将这些特征加入病毒码中,以供日后比对。现行技术主要采取反组译的方式,记录待测执行文件所有应用程序接口的返回地址,再于执行时进行比对。然而,此种技术有两个主要的缺点。第一,并非所有的执行档都可以进行反组译,例如编码过后的执行文件及外挂程序(plug-in)等,也因此无法处理动态加载的程序。第二,使用此种方式,需要监测所有的应用程序接口,因而会消耗大量资源。
因此,如何提供一种能处理编码过后的执行文件及外挂程序的应用程序接口监测技术,亦即动态的监测技术,同时使这样的技术不耗费过多的资源,仍为此领域值得研究的课题。
发明内容
本发明的一目的在于提供一种产生特征码以监测程序的装置。该装置包含呼叫模块、记录模块及产生模块。该呼叫模块用以使该程序通过应用程序接口呼叫函式。该记录模块用以记录该应用程序接口呼叫该函式后的返回地址。该产生模块用以根据该返回地址产生该特征码。该特征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序是否受到攻击。
本发明的另一目的在于提供一种利用特征码以监测程序的装置。该装置包含呼叫模块、记录模块、产生模块及判断模块。该呼叫模块用以使该程序通过应用程序接口呼叫函式。该记录模块用以记录该应用程序接口呼叫该函式后的返回地址。该产生模块用以根据该返回地址产生监测码。该判断模块用以判断该监测码与该特征码是否相同。该特征码为该程序于再次执行时以同样步骤所产生的,以及若该监测码与该特征码不同,该产生模块还用以产生信息用以表示该程序受到攻击。
本发明的另一目的在于提供一种产生特征码以监测程序的方法。该方法包含下列步骤:使该程序通过应用程序接口呼叫函式;记录该应用程序接口呼叫该函式后的返回地址;以及根据该返回地址产生该特征码。该特征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序是否受到攻击。
本发明的另一目的在于提供一种利用特征码以监测程序的方法。该方法包含下列步骤:使该程序通过应用程序接口呼叫函式;记录该应用程序接口呼叫该函式后的返回地址;根据该返回地址产生监测码;判断该监测码与该特征码是否相同;以及若该监测码与该特征码不同,产生信息用以表示该程序受到攻击。其中,该特征码系为该程序于再次执行时以同样步骤所产生的。
本发明的又一目的在于提供一种产生特征码以监测程序的方法。该方法包含下列步骤:令呼叫模块使该程序通过应用程序接口呼叫函式;令记录模块记录该应用程序接口呼叫该函式后的返回地址;以及令产生模块根据该返回地址产生该特征码。该特征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序是否受到攻击。
本发明的再一目的在于提供一种利用特征码以监测程序的方法。该方法包含下列步骤:令呼叫模块使该程序通过应用程序接口呼叫函式;令记录模块记录该应用程序接口呼叫该函式后的返回地址;令产生模块根据该返回地址产生监测码;令判断模块判断该监测码与该特征码是否相同;以及若该监测码与该特征码不同,令该产生模块产生信息用以表示该程序受到攻击。该特征码为该程序于再次执行时以同样步骤所产生的。
本发明先于安全可信赖的环境执行程序,并通过应用程序接口呼叫程序所欲呼叫的函式,再根据应用程序接口的返回地址产生特征码。之后,程序于再次执行时,便可利用特征码进行监测。通过上述的设置及步骤,本发明可达到动态监测应用程序接口,因此适用于所有的执行文件,包括动态加载的外挂程序等。因此,本发明所提供的技术较先前技术更为完善。此外,本发明所需监测的应用程序接口的数目更少,因此可减少系统的负担。
本发明有效提供一种能处理编码过后的执行文件及外挂程序的应用程序接口监测技术,亦即动态的监测技术,且同时不会耗费过多的资源,因此极具备增进功效的技术效益及商业上实际运用的价值。
为让本发明的上述目的、技术特征、和优点能更明显易懂,下文以较佳实施例配合附图进行详细说明。在参照附图随后描述的实施方式后,本发明所属技术领域的技术人员当可轻易了解本发明的基本精神及其它发明目的,以及本发明所采用的技术手段与较佳实施方式。
附图说明
图1A是描述程序呼叫目标应用程序接口的已有技术示意图;
图1B是描述本发明的实施概念示意图;
图2是描述本发明的第一实施例;
图3是描述程序的执行过程示意图;
图4是描述第一实施例的有限状态机;以及
图5是描述第二实施例的方法流程图。
主要元件标记说明
111:来源函式 112:目标应用程序接口
113:呼叫方向 114:呼叫方向
121:来源函式 122:目标应用程序接口
123:呼叫方向 124:呼叫方向
125:呼叫方向 126:呼叫方向
127:绕道函式
2:装置
21:呼叫模块 221:有限状态机
22:记录模块
23:产生模块
231:移位模块 232:运算模块
24:储存模块 25:判断模块
26:储存单元 27:信息
S0:状态
S1:状态
40:移动方向
400:移动方向 401:移动方向
410:移动方向 411:移动方向
具体实施方式
本发明分成记录阶段及监测阶段两部分。记录阶段先于安全可信赖的环境执行程序,并利用应用程序接口侦测技术监测程序的各种行为并记录应用程序接口的返回地址,再根据返回地址产生一特征码。程序于再次执行时,则进入监测阶段,此时亦利用应用程序接口侦测技术观察程序的实际行为,亦记录应用程序接口的返回地址,再根据返回地址求得监测码。最后,比较监测码与特征码,若两者不同,即得知程序受到外界攻击。
请参照图1B,其为描述本发明的实施概念。图中箭头123、124、125、126指示程序执行时,控制权移转的顺序。当程序121欲呼叫一函式(图中未示出)时,会通过目标应用程序接口122。此时,本发明会先呼叫绕道函式127如箭头123所示,再通过绕道函式127呼叫目标应用程序接口122如箭头124所示。当执行完目标应用程序接口122后,会通过绕道函式127返回程序121,亦即目标应用程序接口122先返回绕道函式127如箭头125所示,再返回程序121如箭头126所示。本发明在绕道函式127中使用记录与监测的技术,并使程序121与目标应用程序接口122的呼叫与返回皆需通过绕道函式127。通过这样的设计,可使绕道函式127监测来源函式121呼叫目标应用程序接口122时的行为,以判断程序是否受到外界攻击。
图2描述了本发明的第一实施例,其为产生及利用特征码以监测程序的装置2。此装置2包含呼叫模块21、记录模块22、产生模块23、储存模块24、判断模块25及储存单元26。记录模块22包含有限状态机221。产生模块23包含移位模块231及运算模块232。此装置2适用于微软窗口操作系统。
装置2分为两个阶段运行,即记录阶段与监测阶段,分别为产生特征码及利用特征码的阶段。此二个阶段皆发生于当程序欲呼叫函式时。由于装置2应用于微软窗口系统,因此,程序呼叫此函式时,会先通过第一应用程序接口(即LoadLibraryA())取得储存此函式的数据库的地址,再通过第二应用程序接口(即GetProcAddress())取得此函式的地址。程序于第二应用程序接口取得函式的地址后,即可执行此函式。本实施例欲监测的,即为第一应用程序接口及第二应用程序接口。换言之,第一应用程序接口及第二应用程序接口即为第1B图中的目标应用程序接口122。
首先描述装置2的记录阶段。请同时参照图3,其为描述程序311的执行过程示意图。此时,程序311是在安全可信任的环境下执行。当程序311欲呼叫此函式(图中未示出)时,会利用呼叫模块21通过第一应用程序接口及第二应用程序接口去呼叫。由于此装置应用于微软窗口系统,因此第一应用程序接口及第二应用程序接口皆储存于Win32DLL 312中。
具体而言,呼叫模块21利用程序311中的CALL[IAT_LoadLibraryA_ENTRY]以呼叫第一应用程序接口(即LoadLibraryA()),使程序311执行的控制权转移至Win32DLL 312中的第一应用程序接口(即LoadLibraryA()),如箭头321所示。此时,若以公知技术进行,当控制权转移至第一应用程序接口时,会直接执行其功能主体<Function Body>,再执行RET将控制权转移回程序311。而本实施例中,呼叫模块21则利用第一应用程序接口的JMP LoadLibraryA_STUB,转移控制权置绕道函式313的LoadLibraryA_Wrapper处,如箭头322所示。
当控制权转移至绕道函式313后,记录模块22便会记录第一应用程序接口呼叫此函式后的第一返回地址。记录模块22的详细记录方式将于稍后说明。接着,呼叫模块21再利用绕道函式313的CallLoadLibraryA_Trampoline将控制权转移至应用程序接口调整函式(APITrampoline)314,如箭头323所示。此控制权转换的目的,在于使应用程序接口调整函式314计算出Win32DLL 312的第一应用程序接口接下来要执行的程序代码的地址。呼叫模块21接着利用应用程序接口调整函式314的JMP LoadLibraryA+Offset,将控制权转移回Win32DLL 312中的第一应用程序接口,如箭头324所示。此时,第一应用程序接口的功能主体<Function Body>被接着执行。
当第一应用程序接口执行结束后,呼叫模块21通过第一应用程序接口的RET,将控制权再转移至绕道函式313,如箭头325所示。最后,呼叫模块21再通过绕道函式313的RET返回程序311,如箭头326所示。此时,即结束第一应用程序接口的呼叫。
通过上述的流程可知,第一实施例欲执行第一应用程序接口的功能主体时,呼叫模块21会先将控制权转移至绕道函式313,使记录模块22得以记录第一应用程序接口呼叫函式的第一返回地址。待记录模块22记录完后,呼叫模块21再继续转移控制权以使第一应用程序接口的功能主体得以执行,并再通过绕道函式313返回程序311。换言之,通过呼叫模块21于程序执行的不同时刻转移控制权,可在程序311与第一应用程序接口间建立绕道函式313。在此要指出的是,图1B的程序121即为第3图的程序311,图1B的绕道函式127即为第3图的绕道函式,而图1B的目标API122即为图3的Win32DLL 312。
当控制权返回程序311后,尚需通过第二应用程序接口(即GetProcAddress())以取得所欲呼叫的函式的地址。此时,呼叫模块21及记录模块22进行与前述类似的动作。亦即,呼叫模块21通过与箭头321、322、323、324、325、326相同顺序的移动方向,于程序执行的不同时刻,转移控制权至程序311、Win32DLL 312、绕道函式313及应用程序接口调整函式314中与第二应用程序接口(即GetProcAddress())相对应之处。而记录模块22则在当呼叫模块21将控制权转移至绕道函式313时,记录第二应用程序接口的第二返回地址。待控制权最后返回程序311时,即结束第二应用程序接口的呼叫。此时,程序311已知函式的地址,即可执行此函式。
接着详述记录模块22的具体运行。请参照图4,其为描述第一实施例的记录模块22所含的有限状态机221的具体运行。有限状态机221具有两个状态S0及S1,其中状态S0代表刚取得第一应用程序接口的第一返回地址,而状态S1代表刚取得第二应用程序接口的第二返回地址。有限状态机221初始执行时,必为呼叫模块21呼叫第一应用程序接口的情形,因此进入状态S0,如箭头40所示。接着,若呼叫模块21呼叫第二应用程序接口,则进入状态S1,如箭头401所示。当进入状态S1后,有限状态机211会储存第一应用程序接口的第一返回地址及第二应用程序接口的第二返回地址。
于某些情况,程序311呼叫不只一个函式。此时,呼叫模块21会多次呼叫第一应用程序接口与第二应用程序接口,使得有限状态机221在状态S0及状态S1间转换。详言之,当有限状态机221处于状态S0时,若接着呼叫模块21依然呼叫第一应用程序接口,则有限状态机21继续进入状态S0,如箭头400所示。当有限状态机221处于状态S1时,若接着呼叫模块21呼叫第一应用程序接口,则有限状态机21进入状态S0,如箭头410所示。当有限状态机221处于状态S1时,若接着呼叫模块21依然呼叫第二应用程序接口,则有限状态机21继续进入状态S1,如箭头411所示。
接着,产生模块23再根据第一返回地址及第二返回地址产生特征码。具体而言,移位模块231将该第二返回地址的多个位元移位7个位元。接着,运算模块232将移位的结果与第一返回地址进行互斥(XOR)逻辑运算以得特征码。再此要强调的是,移位模块移动第二返回地址的位元数,可视情况调整,并非用来限制本发明的范围。此外,于其它实施例中,移位模块231亦可选择移动第一返回地址的位元。最后,储存模块24储存该特征码于储存单元26中。
接着说明第一实施例的监测阶段。在产生特征码之后,程序311可能在其它环境执行,此时则利用特征码以监测程序311是否受到攻击。监测阶段与记录阶段类似,亦即,当程序311执行时,呼叫模块21、记录模块22及产生模块23亦进行记录阶段所执行的动作。然而,产生模块23此时对第一返回地址及第二返回地址的运算结果称之为监测码。接着,判断模块25判断监测码与储存单元26中的特征码是否相同。若两者不同,产生模块23则产生信息27用以表示程序311受到攻击。
在此要强调的是,第一实施例的装置2,亦可用以监测其它的应用程序接口,并不限定于上述的第一应用程序接口(即LoadLibraryA())与第二应用程序接口(即GetProcAddress())。此外,本发明亦可只监测一个应用程序接口,仅需将产生模块23做些修改,例如,直接记录应用程序接口的返回地址,或是将返回地址位移。再者,本发明亦可应用于其它操作系统,并不限制于微软窗口系统中。
通过上述的设置及步骤,本发明可达到动态监测应用程序接口,因此适用于所有的执行文件,包括动态加载的外挂程序等。因此,较先前技术更为完善,且不会造成系统太大的负担。
图5描述本发明的第二实施例,其为一种产生及利用特征码以监测程序的方法流程图。第二实施例适用于当程序欲通过应用程序接口呼叫函式之时。
首先,第二实施例执行步骤501,使程序通过第一应用程序接口呼叫函式。接着,执行步骤502,记录该第一应用程序接口呼叫该函式后的第一返回地址。第二实施例接着执行步骤503,使该程序还通过第二应用程序接口呼叫此函式。于步骤504中,第二实施例记录第二应用程序接口呼叫该函式后的第二返回地址。
接着,执行步骤505,将该第二返回地址的多个位元移位预定长度。于步骤506中,第二实施例将移位的结果与该第一返回地址进行互斥逻辑运算以得结果码。接着执行步骤507,判断此程序是否处于监测阶段。若否,则认定此程序处于记录阶段,且认定步骤506所得的结果码为特征码,并执行步骤508以储存该特征码。若步骤507的结果为是,则认定此程序先前已产生过特征码,并认定步骤506所得的结果码为监测码。接着,执行步骤509,判断该监测码与该特征码是否相同。若结果为是,即该监测码与该特征码相同,则执行步骤510以继续执行程序。若步骤509的结果为否,即该监测码与该特征码不同,则执行步骤511以产生信息用以表示该程序受到攻击。
除了图5显示的步骤以外,第二实施例亦能执行第一实施例的所有操作及功能。所属技术领域的技术人员可直接了解第二实施例如何基于上述第一实施例以执行此等操作及功能。故不赘述。
本发明的第三实施例为另一产生及利用特征码以监测程序的方法,此方法应用于第一实施例的装置2,并执行如图5所描述的步骤。
首先,第三实施例执行步骤501,令呼叫模块21使程序通过第一应用程序接口呼叫函式。接着,执行步骤502,令记录模块22记录该第一应用程序接口呼叫该函式后的第一返回地址。第二实施例接着执行步骤503,令呼叫模块21使该程序还通过第二应用程序接口呼叫此函式。于步骤504中,第二实施例令记录模块22记录第二应用程序接口呼叫该函式后的第二返回地址。
接着,执行步骤505,令移位模块231将该第二返回地址的多个位元移位预定长度。于步骤506中,第二实施例令运算模块232将移位的结果与该第一返回地址进行互斥逻辑运算以得结果码。接着执行步骤507,令判断模块25判断此程序是否处于监测阶段。若否,则认定此程序处于记录阶段,且认定步骤506所得的结果码为特征码,并执行步骤508以令储存模块24储存特征码于储存单元26。若步骤507的结果为是,则认定此程序先前已产生过特征码,并认定步骤506所得的结果码为监测码。接着,执行步骤509,令判断模块25判断该监测码与该特征码是否相同。若结果为是,即该监测码与该特征码相同,则执行步骤510以继续执行程序。若步骤510的结果为否,即该监测码与该特征码不同,则执行步骤511以令产生模块23产生信息用以表示该程序受到攻击。
除了前述的步骤外,第三实施例亦能执行第一实施例的所有操作及功能。所属技术领域的技术人员可直接了解第三实施例如何基于上述第一实施例以执行此等操作及功能。故不赘述。
通过上述的设置及步骤,本发明先于安全可信赖的环境执行程序,并通过应用程序接口呼叫程序所欲呼叫的函式,再根据应用程序接口的返回地址产生特征码。之后,程序于再次执行时,便可利用特征码进行监测。因此,本发明可达到动态监测应用程序接口,较先前技术更为完善。此外,本发明所需监测的应用程序接口的数目较少,不会造成系统太大的负担。
本发明亦可利用一种计算机可读取媒体,其储存计算机程序以执行前述的步骤。此计算机可读取媒体可以是软盘、硬盘、光盘、随身碟、磁带、可由网络存取的数据库或所属技术领域的技术人员可轻易思及具有相同功能的储存媒体。
上述的实施例仅用来例举本发明的实施例,以及阐释本发明的技术特征,并非用来限制本发明的范畴。任何所属技术领域的技术人员可轻易完成的改变或均等性的安排均属于本发明所主张的范围,因此本发明的保护范围应以权利要求为准。
Claims (24)
1.一种产生特征码以监测程序的装置,该特征码于一安全可信任的环境下产生,其特征在于包含:
呼叫模块,用以使该程序通过第一应用程序接口以及第二应用程序接口呼叫函式;
记录模块,用以记录该第一应用程序接口呼叫该函式后的第一返回地址以及记录该第二应用程序接口呼叫该函式后的第二返回地址;
产生模块,用以根据该第一返回地址以及该第二返回地址产生该特征码;以及
储存模块,用以储存该特征码;
其中,该特征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序是否受到攻击。
2.根据权利要求1所述的装置,其特征在于该产生模块包含:
运算模块,用以对该第一返回地址及该第二返回地址进行逻辑运算以得该特征码。
3.根据权利要求1所述的装置,其特征在于该产生模块包含:
移位模块,用以将该第二返回地址的多个位元移位预定长度;以及
运算模块,用以将移位的结果与该第一返回地址进行互斥逻辑运算以得该特征码。
4.根据权利要求1所述的装置,其特征在于该记录模块包含:
有限状态机,用以记录该第一返回地址及记录该第二返回地址。
5.根据权利要求1所述的装置,其特征在于该呼叫模块使该程序通过该第一应用程序接口直接呼叫该函式,且使该程序通过该第二应用程序接口呼叫储存该函式的数据库。
6.根据权利要求1所述的装置,其特征在于该装置使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序接口为GetProcAddress()。
7.一种利用特征码以监测程序的装置,其特征在于包含:
呼叫模块,用以使该程序通过第一应用程序接口以及第二应用程序接口呼叫函式;
记录模块,用以记录该第一应用程序接口呼叫该函式后的第一返回地址以及记录该第二应用程序接口呼叫该函式后的第二返回地址;
产生模块,用以根据该第一返回地址以及该第二返回地址产生监测码;
储存模块,用以储存该特征码;以及
判断模块,用以判断该监测码与该特征码是否相同;
其中,该特征码为该程序之前在安全可信任的环境下执行时以同样步骤所产生的,以及若该监测码与该特征码不同,该产生模块还用以产生信息用以表示该程序受到攻击。
8.根据权利要求7所述的装置,其特征在于该产生模块对该第一返回地址及该第二返回地址进行逻辑运算以得该监测码。
9.根据权利要求7所述的装置,其特征在于该产生模块包含:
移位模块,用以将该第二返回地址的多个位元移位预定长度;以及
运算模块,用以将移位的结果与该第一返回地址进行互斥逻辑运算以得该监测码。
10.根据权利要求7所述的装置,其特征在于该记录模块包含:有限状态机,用以记录该第一返回地址及记录该第二返回地址。
11.根据权利要求7所述的装置,其特征在于该呼叫模块使该程序通过该第一应用程序接口直接呼叫该函式,且使该程序通过该第二应用程序接口呼叫储存该函式的数据库。
12.根据权利要求7所述的装置,其特征在于该装置系使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序接口为GetProcAddress()。
13.一种产生特征码以监测程序的方法,该特征码于一安全可信任的环境下产生,其特征在于包含下列步骤:
使该程序通过第一应用程序接口呼叫函式;
记录该第一应用程序接口呼叫该函式后的第一返回地址;
使该程序通过第二应用程序接口呼叫函式;
记录该第二应用程序接口呼叫该函式后的第二返回地址;
根据该第一返回地址产以及该第二返回地址生该特征码;以及
储存该特征码;
其中,该特征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序是否受到攻击。
14.根据权利要求13所述的方法,其特征在于该产生步骤系对该第一返回地址及该第二返回地址进行逻辑运算以得该特征码。
15.根据权利要求13所述的方法,其特征在于该产生步骤包含下列步骤:
将该第二返回地址的多个位元移位预定长度;以及
将移位的结果与该第一返回地址进行互斥逻辑运算以得该特征码。
16.根据权利要求13所述的方法,其特征在于记录该第一返回地址及记录该第二返回地址的步骤系通过有限状态机执行。
17.根据权利要求13所述的方法,其特征在于该第一应用程序接口直接呼叫该函式,而该第二应用程序接口系呼叫储存该函式的数据库。
18.根据权利要求13所述的方法,其特征在于该方法使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序接口为GetProcAddress()。
19.一种利用特征码以监测程序的方法,其特征在于包含下列步骤:
使该程序通过第一应用程序接口呼叫函式;
记录该第一应用程序接口呼叫该函式后的第一返回地址;
使该程序通过第二应用程序接口呼叫函式;
记录该第二应用程序接口呼叫该函式后的第二返回地址;
根据该第一返回地址以及该第二返回地址产生监测码;
储存该特征码;
判断该监测码与该特征码是否相同;以及
若该监测码与该特征码不同,产生信息用以表示该程序受到攻击;
其中,该特征码为该程序之前在安全可信任的环境下执行时以同样步骤所产生的。
20.根据权利要求19所述的方法,其特征在于该产生步骤对该第一返回地址及该第二返回地址进行逻辑运算以得该监测码。
21.根据权利要求19所述的方法,其特征在于该产生步骤包含下列步骤:
将该第二返回地址的多个位元移位预定长度;以及
将移位的结果与该第一返回地址进行互斥逻辑运算以得该监测码。
22.根据权利要求19所述的方法,其特征在于记录该第一返回地址及记录该第二返回地址的步骤系通过有限状态机执行。
23.根据权利要求19所述的方法,其特征在于该第一应用程序接口直接呼叫该函式,且该第二应用程序接口呼叫储存该函式的数据库。
24.根据权利要求19所述的方法,其特征在于该方法使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序接口为GetProcAddress()。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610167325A CN101211388B (zh) | 2006-12-27 | 2006-12-27 | 产生及利用特征码以监测程序的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610167325A CN101211388B (zh) | 2006-12-27 | 2006-12-27 | 产生及利用特征码以监测程序的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101211388A CN101211388A (zh) | 2008-07-02 |
CN101211388B true CN101211388B (zh) | 2010-05-19 |
Family
ID=39611412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610167325A Expired - Fee Related CN101211388B (zh) | 2006-12-27 | 2006-12-27 | 产生及利用特征码以监测程序的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101211388B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447244A (zh) * | 2003-04-03 | 2003-10-08 | 杭州中天微系统有限公司 | 一种设计在cpu里的侦测缓冲区溢出的方法 |
CN1818822A (zh) * | 2005-02-07 | 2006-08-16 | 福建东方微点信息安全有限责任公司 | 缓冲区溢出攻击的检测方法 |
-
2006
- 2006-12-27 CN CN200610167325A patent/CN101211388B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447244A (zh) * | 2003-04-03 | 2003-10-08 | 杭州中天微系统有限公司 | 一种设计在cpu里的侦测缓冲区溢出的方法 |
CN1818822A (zh) * | 2005-02-07 | 2006-08-16 | 福建东方微点信息安全有限责任公司 | 缓冲区溢出攻击的检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101211388A (zh) | 2008-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101957773B (zh) | 用于多轮次动态概要分析的方法及其系统 | |
TWI515598B (zh) | 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
US20080148241A1 (en) | Method and apparatus for profiling heap objects | |
McDaniel et al. | Towards a Secure and Efficient System for End-to-End Provenance. | |
US9355003B2 (en) | Capturing trace information using annotated trace output | |
JP5618796B2 (ja) | 計算機、計算機の制御方法及びプログラム | |
US9367428B2 (en) | Transparent performance inference of whole software layers and context-sensitive performance debugging | |
CN104063245A (zh) | 基于垃圾回收的内存分析优化方法及系统 | |
CN111625833A (zh) | 一种高效的软件程序释放后重用漏洞判定方法和装置 | |
CN111159022B (zh) | 基于单变量访问序模式的中断数据访问冲突检测方法及装置 | |
CN101211388B (zh) | 产生及利用特征码以监测程序的装置及方法 | |
CN112965845A (zh) | 延迟分析方法、电子设备及存储介质 | |
CN110045952B (zh) | 代码调用方法与装置 | |
KR20110100923A (ko) | 악성 코드 탐지 장치 및 그 방법, 이를 위한 프로그램이 기록된 기록 매체 | |
CN106557572A (zh) | 一种安卓应用程序文件的提取方法及系统 | |
CN114625646A (zh) | 一种检测系统内存越界的方法和装置 | |
CN112905474B (zh) | 一种基于硬件的高级程序动态控制流追踪方法和装置 | |
Ma et al. | Twalker: An efficient taint analysis tool | |
CN112162954B (zh) | 用户操作日志生成、路径的定位方法、装置、设备及介质 | |
CN110851332B (zh) | 一种日志文件的处理方法、装置、设备和介质 | |
CN111212029A (zh) | 一种敏感数据监测与跟踪方法 | |
IL193912A (en) | Apparatus, method and computer program product for generating trace data | |
WO2007087075A1 (en) | Compile-time interpretable code error detection | |
JP5199975B2 (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100519 Termination date: 20201227 |