产生及利用特征码以监测程序的装置及方法

文档序号:6564352阅读:192来源:国知局
专利名称:产生及利用特征码以监测程序的装置及方法
技术领域
本发明涉及一种监测程序的装置及方法;尤其涉及一种利用应用程序 接口侦测(Application Program Interface Hooking;简称API Hooking) 技术以监测程序的装置及方法。
背景技术
由于因特网的普及,近年来计算机病毒的发展也以可在因特网间传递 的蠕虫及特洛伊木马程序等为主。在微软窗口操作系统环境中,这些蠕虫 及特洛伊木马程序主要是趁执行中的程序发生缓冲区溢位(buffer overflow)的问题时,或趁系统呼叫应用程序接口 (Application Program Interface;简称API)时,取得对程序的控制权,进而破坏整个计算机的 运行。图1A是描述程序(source function)lll呼叫目标应用程序接口 112 的已有技术的示意图。图中箭头所指的方向代表函式间呼叫的方向。由箭 头113、 114分别可知,程序U1直接呼叫目标应用程序接口 112,而目标 应用程序接口 112执行完后亦直接返回程序111。现行的防毒软件都是在发生第一次灾情之后,找出并记录蠕虫及特洛 伊木马程序等病毒的特征,再将这些特征加入病毒码中,以供日后比对。 现行技术主要采取反组译的方式,记录待测执行文件所有应用程序接口的 返回地址,再于执行时进行比对。然而,此种技术有两个主要的缺点。第 一,并非所有的执行档都可以进行反组译,例如编码过后的执行文件及外 挂程序(plug-in)等,也因此无法处理动态加载的程序。第二,使用此种 方式,需要监测所有的应用程序接口,因而会消耗大量资源。因此,如何提供一种能处理编码过后的执行文件及外挂程序的应用程 序接口监测技术,亦即动态的监测技术,同时使这样的技术不耗费过多的 资源,仍为此领域值得研究的课题。发明内容本发明的一目的在于提供一种产生特征码以监测程序的装置。该装置 包含呼叫模块、记录模块及产生模块。该呼叫模块用以使该程序通过应用 程序接口呼叫函式。该记录模块用以记录该应用程序接口呼叫该函式后的 返回地址。该产生模块用以根据该返回地址产生该特征码。该特征码被用 以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序 是否受到攻击。本发明的另一目的在于提供一种利用特征码以监测程序的装置。该装 置包含呼叫模块、记录模块、产生模块及判断模块。该呼叫模块用以使该 程序通过应用程序接口呼叫函式。该记录模块用以记录该应用程序接口呼 叫该函式后的返回地址。该产生模块用以根据该返回地址产生监测码。该 判断模块用以判断该监测码与该特征码是否相同。该特征码为该程序于再 次执行时以同样步骤所产生的,以及若该监测码与该特征码不同,该产生 模块还用以产生信息用以表示该程序受到攻击。本发明的另一目的在于提供一种产生特征码以监测程序的方法。该方 法包含下列步骤使该程序通过应用程序接口呼叫函式;记录该应用程序 接口呼叫该函式后的返回地址;以及根据该返回地址产生该特征码。该特 征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决 定该程序是否受到攻击。本发明的另一目的在于提供一种利用特征码以监测程序的方法。该方 法包含下列步骤使该程序通过应用程序接口呼叫函式;记录该应用程序 接口呼叫该函式后的返回地址;根据该返回地址产生监测码;判断该监测 码与该特征码是否相同;以及若该监测码与该特征码不同,产生信息用以 表示该程序受到攻击。其中,该特征码系为该程序于再次执行时以同样步 骤所产生的。
本发明的又一 目的在于提供一种产生特征码以监测程序的方法。该方 法包含下列步骤令呼叫模块使该程序通过应用程序接口呼叫函式;令记 录模块记录该应用程序接口呼叫该函式后的返回地址;以及令产生模块根 据该返回地址产生该特征码。该特征码被用以与该程序于再次执行时以同 样步骤所产生的监测码比对,以决定该程序是否受到攻击。本发明的再一 目的在于提供一种利用特征码以监测程序的方法。该方 法包含下列步骤令呼叫模块使该程序通过应用程序接口呼叫函式;令记 录模块记录该应用程序接口呼叫该函式后的返回地址;令产生模块根据该 返回地址产生监测码;令判断模块判断该监测码与该特征码是否相同;以 及若该监测码与该特征码不同,令该产生模块产生信息用以表示该程序受 到攻击。该特征码为该程序于再次执行时以同样步骤所产生的。本发明先于安全可信赖的环境执行程序,并通过应用程序接口呼叫程 序所欲呼叫的函式,再根据应用程序接口的返回地址产生特征码。之后, 程序于再次执行时,便可利用特征码进行监测。通过上述的设置及步骤, 本发明可达到动态监测应用程序接口,因此适用于所有的执行文件,包括 动态加载的外挂程序等。因此,本发明所提供的技术较先前技术更为完善。 此外,本发明所需监测的应用程序接口的数目更少,因此可减少系统的负 担。本发明有效提供一种能处理编码过后的执行文件及外挂程序的应用 程序接口监测技术,亦即动态的监测技术,且同时不会耗费过多的资源, 因此极具备增进功效的技术效益及商业上实际运用的价值。为让本发明的上述目的、技术特征、和优点能更明显易懂,下文以较 佳实施例配合附图进行详细说明。在参照附图随后描述的实施方式后,本 发明所属技术领域的技术人员当可轻易了解本发明的基本精神及其它发 明目的,以及本发明所采用的技术手段与较佳实施方式。


图1A是描述程序呼叫目标应用程序接口的已有技术示意图IB是描述本发明的实施概念示意图; 图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:信息S :状态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则利用第一应用程序接口的JMPLoadLibraryA—STUB,转移控 制权置绕道函式313的LoadLibraryA—Wrapper处,如箭头322所示。当控制权转移至绕道函式313后,记录模块22便会记录第一应用程 序接口呼叫此函式后的第一返回地址。记录模块22的详细记录方式将于 稍后说明。接着,呼叫模块21再利用绕道函式313的Call LoadLibraryAJYampoline将控制权转移至应用程序接口调整函式(API Trampoline)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的目标API 122即为图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具有 两个状态S。及S,,其中状态S。代表刚取得第一应用程序接口的第一返回地 址,而状态S,代表刚取得第二应用程序接口的第二返回地址。有限状态机 221初始执行时,必为呼叫模块21呼叫第一应用程序接口的情形,因此进 入状态S。,如箭头40所示。接着,若呼叫模块21呼叫第二应用程序接口, 则进入状态S,,如箭头401所示。当进入状态S,后,有限状态机211会储
存第一应用程序接口的第一返回地址及第二应用程序接口的第二返回地 址。于某些情况,程序311呼叫不只一个函式。此时,呼叫模块21会多 次呼叫第一应用程序接口与第二应用程序接口,使得有限状态机221在状 态S。及状态SJ司转换。详言之,当有限状态机221处于状态S(,时,若接 着呼叫模块21依然呼叫第一应用程序接口,则有限状态机21继续进入状 态Su,如箭头400所示。当有限状态机221处于状态S'时,若接着呼叫模 块21呼叫第一应用程序接口,则有限状态机21进入状态S。,如箭头410 所示。当有限状态机221处于状态SJ寸,若接着呼叫模块21依然呼叫第 二应用程序接口,则有限状态机21继续进入状态S"如箭头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产生信息用以表示该程序受到攻击。除了前述的步骤外,第三实施例亦能执行第一实施例的所有操作及功 能。所属技术领域的技术人员可直接了解第三实施例如何基于上述第一实 施例以执行此等操作及功能。故不赘述。通过上述的设置及步骤,本发明先于安全可信赖的环境执行程序,并 通过应用程序接口呼叫程序所欲呼叫的函式,再根据应用程序接口的返回 地址产生特征码。之后,程序于再次执行时,便可利用特征码进行监测。 因此,本发明可达到动态监测应用程序接口,较先前技术更为完善。此外, 本发明所需监测的应用程序接口的数目较少,不会造成系统太大的负担。本发明亦可利用一种计算机可读取媒体,其储存计算机程序以执行前 述的步骤。此计算机可读取媒体可以是软盘、硬盘、光盘、随身碟、磁带、 可由网络存取的数据库或所属技术领域的技术人员可轻易思及具有相同
功能的储存媒体。上述的实施例仅用来例举本发明的实施例,以及阐释本发明的技术特 征,并非用来限制本发明的范畴。任何所属技术领域的技术人员可轻易完 成的改变或均等性的安排均属于本发明所主张的范围,因此本发明的保护 范围应以权利要求为准。
权利要求
1. 一种产生特征码以监测程序的装置,其特征在于包含呼叫模块,用以使该程序通过第一应用程序接口呼叫函式;记录模块,用以记录该第一应用程序接口呼叫该函式后的第一返回地址;以及产生模块,用以根据该第一返回地址产生该特征码;其中,该特征码被用以与该程序于再次执行时以同样步骤所产生的监测码比对,以决定该程序是否受到攻击。
2. 根据权利要求1所述的装置,其特征在于该呼叫模块还用以使该程 序还通过第二应用程序接口呼叫该函式,该记录模块还用以记录该第二应 用程序接口呼叫该函式后的第二返回地址;以及该产生模块还用以根据该第二返回地址产生该特征码。
3. 根据权利要求2所述的装置,其特征在于该产生模块包含运算模块,用以对该第一返回地址及该第二返回地址进行逻辑运算以 得该特征码。
4. 根据权利要求2所述的装置,其特征在于该产生模块包含移位模块,用以将该第二返回地址的多个位元移位预定长度;以及运算模块,用以将移位的结果与该第一返回地址进行互斥逻辑运算以 得该特征码。
5. 根据权利要求2所述的装置,其特征在于该记录模块包含有限状态机,用以记录该第一返回地址及记录该第二返回地址。
6. 根据权利要求2所述的装置,其特征在于还包含储存模块,用以储存该特征码。
7. 根据权利要求2所述的装置,其特征在于该呼叫模块使该程序通过 该第一应用程序接口直接呼叫该函式,且使该程序通过该第二应用程序接 口呼叫储存该函式的数据库。
8. 根据权利要求2所述的装置,其特征在于该装置使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序接口 为GetProcAddress ()。
9. 一种利用特征码以监测程序的装置,其特征在于包含呼叫模块,用以使该程序通过第一应用程序接口呼叫函式; 记录模块,用以记录该第一应用程序接口呼叫该函式后的第一返回地址;产生模块,用以根据该第一返回地址产生监测码;以及判断模块,用以判断该监测码与该特征码是否相同;其中,该特征码为该程序于再次执行时以同样步骤所产生的,以及若 该监测码与该特征码不同,该产生模块还用以产生信息用以表示该程序受 到攻击。
10. 根据权利要求9所述的装置,其特征在于该呼叫模块还用以使 该程序还通过第二应用程序接口呼叫该函式,该记录模块还用以记录该第 二应用程序接口呼叫该函式后的第二返回地址;以及该产生模块还用以根 据该第二返回地址产生该监测码。
11. 根据权利要求10所述的装置,其特征在于该产生模块对该第一 返回地址及该第二返回地址进行逻辑运算以得该监测码。
12. 根据权利要求10所述的装置,其特征在于该产生模块包含移位模块,用以将该第二返回地址的多个位元移位预定长度;以及运算模块,用以将移位的结果与该第一返回地址进行互斥逻辑运算以 得该监测码。
13. 根据权利要求10所述的装置,其特征在于该记录模块包含 有限状态机,用以记录该第一返回地址及记录该第二返回地址。
14. 根据权利要求10所述的装置,其特征在于该呼叫模块使该程序通过该第一应用程序接口直接呼叫该函式,且使该程序通过该第二应用程序接口呼叫储存该函式的数据库。
15. 根据权利要求10所述的装置,其特征在于该装置系使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程 序接口为GetProcAddress()。
16. —种产生特征码以监测程序的方法,其特征在于包含下列步骤 使该程序通过第一应用程序接口呼叫函式; 记录该第一应用程序接口呼叫该函式后的第一返回地址;以及 根据该第一返回地址产生该特征码;其中,该特征码被用以与该程序于再次执行时以同样步骤所产生的监 测码比对,以决定该程序是否受到攻击。
17. 根据权利要求16所述的方法,其特征在于还包含下列步骤使该程序还通过第二应用程序接口呼叫该函式;以及 记录该第二应用程序接口呼叫该函式后的第二返回地址;其中,该产生步骤还根据该第二返回地址产生该特征码。
18. 根据权利要求17所述的方法,其特征在于该产生步骤系对该第 一返回地址及该第二返回地址进行逻辑运算以得该特征码。
19. 根据权利要求17所述的方法,其特征在于该产生步骤包含下列 步骤将该第二返回地址的多个位元移位预定长度;以及 将移位的结果与该第一返回地址进行互斥逻辑运算以得该特征码。
20. 根据权利要求17所述的方法,其特征在于记录该第一返回地址 及记录该第二返回地址的步骤系通过有限状态机执行。
21. 根据权利要求17所述的方法,还包含储存该特征码的步骤。
22. 根据权利要求17所述的方法,其特征在于该第一应用程序接口 直接呼叫该函式,而该第二应用程序接口系呼叫储存该函式的数据库。
23. 根据权利要求17所述的方法,其特征在于该方法使用于微软窗口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序 接口为GetProcAddress()。
24. —种利用特征码以监测程序的方法,其特征在于包含下列步骤 使该程序通过第一应用程序接口呼叫函式; 记录该第一应用程序接口呼叫该函式后的第一返回地址; 根据该第一返回地址产生监测码; 判断该监测码与该特征码是否相同;以及若该监测码与该特征码不同,产生信息用以表示该程序受到攻击; 其中,该特征码为该程序于再次执行时以同样步骤所产生的。
25. 根据权利要求24所述的方法,其特征在于还包含下列步骤使该程序还通过第二应用程序接口呼叫该函式;以及 记录该第二应用程序接口呼叫该函式后的第二返回地址; 其中,该产生步骤还根据该第二返回地址产生该监测码。
26. 根据权利要求25所述的方法,其特征在于该产生步骤对该第一返回地址及该第二返回地址进行逻辑运算以得该监测码。
27. 根据权利要求25所述的方法,其特征在于该产生步骤包含下列步骤将该第二返回地址的多个位元移位预定长度;以及 将移位的结果与该第一返回地址进行互斥逻辑运算以得该监测码。
28. 根据权利要求25所述的方法,其特征在于记录该第一返回地址 及记录该第二返回地址的步骤系通过有限状态机执行。
29. 根据权利要求25所述的方法,其特征在于该第一应用程序接口 直接呼叫该函式,且该第二应用程序接口呼叫储存该函式的数据库。
30. 根据权利要求25所述的方法,其特征在于该方法使用于微软窗 口操作系统,该第一应用程序接口为LoadLibraryA(),且该第二应用程序 接口为GetProcAddress()。
全文摘要
一种产生及利用特征码以监测程序的装置及方法。本发明先于安全可信赖的环境执行该程序,并通过应用程序接口呼叫该程序所欲呼叫的函式,再根据该应用程序接口的返回地址产生该特征码。之后,当该程序再次执行时,便可利用该特征码进行监测。通过上述的设置及步骤,本发明可达到动态监测该应用程序的接口,因此适用于所有的执行文件,包括动态加载的外挂程序等。因此,本发明所提供的技术与已有技术相比更为完善。此外,本发明所需监测的应用程序接口的数目更少,因此可减少系统的负担。
文档编号G06F21/00GK101211388SQ20061016732
公开日2008年7月2日 申请日期2006年12月27日 优先权日2006年12月27日
发明者孙宏民, 张仕颖, 林港乔, 陈帅名, 陈政恺 申请人:财团法人资讯工业策进会
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1