CN101458754B - 一种监控应用程序行为的方法及装置 - Google Patents
一种监控应用程序行为的方法及装置 Download PDFInfo
- Publication number
- CN101458754B CN101458754B CN2009100031812A CN200910003181A CN101458754B CN 101458754 B CN101458754 B CN 101458754B CN 2009100031812 A CN2009100031812 A CN 2009100031812A CN 200910003181 A CN200910003181 A CN 200910003181A CN 101458754 B CN101458754 B CN 101458754B
- Authority
- CN
- China
- Prior art keywords
- application program
- function
- new
- thread
- access file
- 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
Links
Images
Abstract
本发明公开了一种监控应用程序行为的方法及装置,属于计算机领域。所述方法包括:向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入代码段;应用程序启动后,应用程序包括的新段调用创建线程函数包括的代码段,创建线程函数包括的代码段获取处理应用程序的线程号;所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段监控所述访问文件或注册表函数的操作过程,并记录监控的结果;在所述应用程序退出时,按所述获取的线程号输出所述监控的结果。所述装置包括:添加模块、获取模块、监控模块、输出模块。本发明对正在运行的应用程序监控,占用系统资源少,不影响操作系统与应用程序运行的速度。
Description
技术领域
本发明涉及计算机领域,特别涉及一种监控应用程序行为的方法及装置。
背景技术
Windows系统作为一个开放的平台,任何软件厂商或者个人都可以发布自己的软件产品,然而,有一些恶意软件会擅自读取甚至篡改用户的私有信息。因此,用户所使用的软件的安全性无法得到的保证。为了保障安全性,用户可以采用的实时监控的方法对软件行为进行监控并记录软件的行为日志,并将记录的日志通知给用户让用户处理。目前用户通常使用杀毒软件或Microsoft发布的系统监控软件Process Monitor对软件的行为进行实时监控。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
杀毒软件在运行时通常占用较多系统资源如CPU和内存,容易导致操作系统和应用程序反应缓慢,而且需要频繁升级,无法满足没有网络连接的用户的需求;Process Monitor采取底层驱动过滤的方式实时监控操作系统中所有应用程序的行为,虽然这种监控方式不易被绕过,但由于它监视整个系统中所有的应用程序,因此占用了过多的计算资源,导致系统反应迟钝。
发明内容
为了在监控应用程序行为时,减少占用的资源,本发明实施例提供了一种监控应用程序行为的方法及装置。所述技术方案如下:
一种监控应用程序行为的方法,所述方法包括:
向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入相同的代码段,所述新段用于调用所述创建线程函数中的代码段和所述访问文件/注册表函数中的代码段,所述代码段用于截取所述创建线程函数和所述访问文件/注册表函数的配置参数,监控所述创建线程函数和所述访问文件/注册表函数的操作过程,并以日志信息的形式记录监控的结果;
应用程序启动后,所述应用程序包括的新段调用创建线程函数包括的代码段,所述创建线程函数包括的代码段获取处理应用程序的线程号;
所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作功能,并记录所述操作功能对应的日志信息;
在所述应用程序退出时,按所述获取的线程号输出所述监控的结果;
其中,所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作功能,并记录所述操作功能对应的日志信息,具体包括:
判断所述调用的访问文件/注册表函数的操作功能;
若是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建所述新句柄,若成功创建新句柄,则记录监控的结果包括获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录监控的结果包括所述获取的线程号、创建线程函数名称、访问文件/注册表函数的名称、新资源名、错误代码;
若是对所述句柄进行读取或修改,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误/正确信息;
若是关闭所述句柄,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误/正确信息。
所述向应用程序加入新段,具体包括:
在调试符号与输出函数表之间创建了一个新段,所述新段包含有新的可移植的执行体PE头与一个新的函数输入表,所述新的PE头是通过将原PE头复制得到的PE头,同时修改了所述原PE头使之指向所述新的函数输入表。
所述新的输入表调用所述创建线程函数包括的代码段和所述访问文件/注册表函数包括的代码段。
所述创建线程函数包括的代码段获取处理应用程序的线程号,具体包括:
所述创建线程函数包括的代码段链接到对应的创建线程函数,所述创建线程函数获取处理所述应用程序的线程号。
所述创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名;
记录所述资源名与句柄之间的映射关系。
所述资源名与句柄之间的映射关系记录在全局的数据结构中。
一种监控应用程序行为的装置,所述装置包括:
添加模块,用于向应用程序加入新段,向创建线程函数、访问文件/注册表函数加入相同的代码段,所述新段用于调用所述创建线程函数中的代码段和所述访问文件/注册表函数中的代码段,所述代码段用于截取所述创建线程函数和所述访问文件/注册表函数的配置参数,监控所述创建线程函数和所述访问文件/注册表函数的操作过程,并以日志信息的形式记录监控的结果;
获取模块,用于应用程序启动后,所述应用程序包括的新段调用创建线程函数包括的代码段,所述创建线程函数包括的代码段获取处理应用程序的线程号;
监控模块,包括判断单元、第一记录单元、第二记录单元和第三记录单元;
所述判断单元,用于所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段判断所述调用的访问文件/注册表函数的操作功能;
所述第一记录单元,用于在判断单元判断出所述访问文件/注册表函数的功能是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建所述新句柄,若成功创建新句柄,则记录监控的结果包括记录获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录监控的结果包括所述获取的线程号、创建线程函数的名称、访问文件/注册表的函数的名称、新资源名、错误代码;
所述第二记录单元,用于判断单元判断出所述访问文件/注册表函数的功能是对所述句柄进行读取或修改,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误/正确信息;
所述第三记录单元,用于判断单元判断出的所述访问函数的功能是关闭所述句柄,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误/正确信息;
输出模块,用于在所述应用程序退出时,按所述获取的线程号输出所述监控的结果。
所述添加模块具体包括:
创建单元,用于在调试符号与输出函数表之间创建了一个新段,所述新段包含有新的PE头与一个新的函数输入表,所述新的PE头是通过将原PE头复制得到的PE头;
修改单元,用于修改所述原PE头使之指向所述新的函数输入表。
所述新的输入表调用所述应用程序编程接口函数包括的代码段。
所述获取模块具体包括:
调用单元,用于应用程序启动后,所述启动的应用程序包括的新段调用创建线程函数包括的代码段;
链接单元,用于所述代码段链接到对应的创建线程函数;
获取单元,用于所述创建线程函数获取处理所述应用程序的线程号。
所述装置还包括:
创建模块,用于所述创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名,用于记录所述资源名与句柄之间的映射关系。
所述资源名与句柄之间的映射关系记录在全局的数据结构中。
本发明实施例提供的技术方案的有益效果是:
通过向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入代码段,利用代码段监控应用程序调用的访问文件/注册表函数的操作过程,并记录监控的结果,在应用程序退出时,将记录的监控的结果输出给用户,由于对具体的正在运行应用程序进行监控,所以在监控时,占用系统的资源少,不会影响操作系统与应用程序运行的速度。
附图说明
图1是本发明实施例提供了一种监控应用程序行为的方法流程图;
图2是本发明实施例提供了一种监控应用程序行为的方法详细流程图;
图3是本发明实施例提供了一种监控应用程序行为的装置。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
如图1所示,本发明实施例提供了一种监控应用程序行为的方法,包括:
步骤101:向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入代码段;
步骤102:应用程序启动后,启动的应用程序包括的新段调用创建线程函数包括的代码段,调用的创建线程函数包括的代码段获取处理应用程序的线程号;
步骤103:启动的应用程序包括的新段调用访问文件/注册表函数包括的代码段,调用的访问文件/注册表函数包括的代码段监控访问文件/注册表函数的操作过程,并记录监控的结果;
步骤104:在应用程序退出时,按获取的线程号输出记录的监控的结果给用户。
在本实施例中以日志信息的形式记录监控的结果。
本实施向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入代码段,利用代码段监控应用程序调用的访问文件/注册表函数的操作过程,并记录监控的结果,在应用程序退出时,将记录的监控的结果输出给用户,由于对具体的正在运行的应用程序进行监控,所以在监控时,占用系统的资源少,不会影响操作系统与应用程序运行的速度。
实施例2
如图2所示,本发明实施例提供了一种监控应用程序行为的方法,具体包括:
步骤201:对应用程序和Windows系统内的API(Application Programming Interface,应用程序编程接口)函数进行代码插装;
具体地,在Windows系统中应用程序以执行文件的形式存在,执行文件包括文件头、PE(Portable Executable,可移植的执行体)头,正文段包括程序代码,数据段包括初始化数据、所用到的动态连接库与系统调用的输入链表、输出(Exported)函数表与调试符号。为了修改应用程序在内存中的映像,利用Detours工具在调试符号与输出函数表之间创建了一个新段,该新段包含有新的PE头与一个新的函数输入表,该新的PE头是通过将原PE头复制得到的PE头,同时修改了原先的PE头使之指向新的输入表。在Windows系统的API函数中插装新的代码段,该代码段用于在API函数被应用程序调用时,截获调用的API函数的配置参数,并监控该API函数操作过程,以日志信息的形式记录监控的结果,其中,被插装代码的API函数包括创建线程函数与访问文件/注册表函数。
在本实施例中执行文件的新的输入表包括新的动态连接库,应用程序在需要调用API函数时,先查询新的函数输入表,从而调用了插入的代码段。
步骤202:应用程序启动,调用创建线程函数,利用调用的创建线程函数获得处理启动的应用程序的线程号,并为应用程序打开的文件或注册表项创建句柄;
具体地,应用程序在启动时,查询新的函数输入表,进而调用代码段,代码段链接对应的创建线程函数用于为应用程序打开的文件或注册表项创建句柄,并将句柄返回给应用程序,然后应用程序通过句柄来进行操作,其中,句柄用于标识文件或注册表项,在本实施例中将文件名称、注册表项名称统称为资源名。创建线程函数在创建一个句柄后,记录资源名与句柄之间的映射关系。
步骤203:应用程序包括的新段调用代码段,代码段链接对应的访问文件/注册表函数;
其中,访问文件/注册表函数被调用时,Windows系统为访问文件/注册表函数配置参数,代码段截获参数,同时开始监控访问文件/注册表函数的操作过程。
步骤204:代码段判断调用的访问文件/注册表函数的操作功能,若该函数是根据应用程序使用的句柄进行创建新句柄的操作,则执行步骤205,若是对应用程序使用的句柄进行读取或修改操作,则执行步骤209,若关闭应用程序使用的句柄,则执行210,否则,执行步骤213;
其中,应用程序调用访问文件/注册表函数,同时为该访问文件/注册表函数配置参数。
步骤205:访问文件/注册表的函数创建新资源名;
具体地,访问文件/注册表函数从记录的资源名与句柄之间的映射关系中,以应用程序使用的句柄为索引,查找出对应的资源名,将查找的资源名与截获的参数组合得到新资源名,其中,该参数为访问文件/注册表函数包括的插装的代码段截获的参数。
步骤206:访问文件/注册表函数为新资源名创建新句柄,若创建不成功,则执行步骤207,否则,执行步骤208;
步骤207:记录日志信息包括获取的线程号、创建线程函数的名称、访问文件/注册表的函数的名称、新资源名、错误代码等等,返回步骤203;
其中,日志信息按线程进行记录的信息,从而能够更好地帮助用户分析应用程序的行为。
步骤208:记录创建的新句柄与新资源名之间的映射关系,同时记录日志信息包括获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值等等,返回步骤203;
步骤209:从句柄与资源名之间的映射关系中查找出应用程序使用的句柄对应的资源名;记录日志信息包括获取的线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误(正确)信息等等,返回步骤203;
步骤210:从句柄与资源名之间的对应关系中,以应用程序使用的句柄,查找出对应的资源名,记录日志信息包括获取的线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误(正确)信息等等;
步骤211:关闭应用程序使用的句柄,若关闭成功,则执行212,否则,执行203;
步骤212:从句柄与资源名之间的映射关系中删除应用程序使用的句柄与查找的资源名之间的对应关系,返回步骤203;
步骤213:应用程序退出时,输出日志信息。
其中,系统通过命名管道将记录的日志信息以字符串的形式输出给用户。
在本实施例中在应用程序和操作系统的API函数中插装代码,无须修改操作系统和应用程序的代码,因此,对用户是透明地;另外,所有的操作都在应用层进行,不会对操作系统内核和驱动进行任何修改。
本实施例中事先建立一个全局的数据结构HandleToName_map用于记录资源名与句柄之间的映射关系,在初始化该全局的数据结构时,先将<HKEY_LOCAL_MACHINE,“HKLM”>,<HKEY_CURRENT_USER,“HKCU”>,<HKEY_ALL_USERS,“HKU”>,<HKEY_CURRENT_CONFIG,“HKCC”>,<HKEY_CLASSES_ROOT,“HKCR”>等映射关系加入到该全局的数据结构中。
在本实施例中进行代码段插装的API函数包括CreateThread,RegCreateKeyEx,RegOpenKeyEx,RegCloseKey,RegDeleteKey,RegSetValueEx,RegQueryValueEx,RegEnumKeyEx,RegEnumValue,RegDeleteValue,RegQueryInfoKeyEx,RegOpenCurrentUser,RegOpenUserClass,CreateFile,CopyFileEx,DeleteFile,FindFirstFileEx,FindNextFile,GetFileAttributes等等。
本发明实施例提供的一种监控应用程序行为的方法可以通过如下的伪代码来实现:
本实施在应用程序和Windows系统的API函数中插装代码,应用程序的包括的新段启动调用API函数的代码段,代码段对调用的API函数进行监控,并记录API函数操作的日志信息,在应用程序退出时,将记录的日志信息输出给用户,由于对具体的正在运行的应用程序进行监控,所以占用系统的资源少,不会影响操作系统与应用程序运行的速度,并且按线程输出日志信息可以更好地帮助用户分析应用程序的行为。
实施例3
如图3所示,本发明实施例提供了一种监控应用程序行为的装置,包括:
添加模块301,用于向应用程序加入新段,向创建线程函数、访问文件/注册表函数加入代码段;
获取模块302,用于应用程序启动后,启动的应用程序包括的新段调用创建线程函数包括的代码段,调用的创建线程函数包括的代码段获取处理应用程序的线程号;
监控模块303,用于新段调用访问文件/注册表函数包括的代码段,调用的访问文件/注册表函数包括的代码段监控访问文件/注册表函数的操作过程,并记录监控的结果;
输出模块304,用于在应用程序退出时,按获取的线程号输出监控的结果。
其中,在本实施例中以日志信息的形式记录监控的结果。
其中,添加模块301具体包括:
创建单元,用于在调试符号与输出函数表之间创建了一个新段,新段包含有新的PE头与一个新的函数输入表,该新的PE头是通过将原PE头复制得到的PE头;
修改单元,用于修改原PE头使之指向新的输入表;
其中,新的输入表调用创建线程函数包括的代码段和访问文件/注册表函数包括的代码段。
获取模块302具体包括:
调用单元,用于应用程序启动后,启动的应用程序包括的新段调用创建线程函数包括的代码段;
链接单元,用于调用单元调用的代码段链接到对应的创建线程函数;
获取单元,用于链接单元链接的创建线程函数获取处理启动的应用程序的线程号。
监控模块具体包括;
判断单元,用于新段调用的访问文件/注册表函数包括的代码段,调用的代码段判断调用的访问文件/注册表函数的操作功能;
第一记录单元,用于在判断单元判断出所述访问文件/注册表函数的操作功能是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建了新句柄,若成功创建新句柄,则记录日志信息包括记录获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录日志信息包括获取的线程号、创建线程函数的名称、访问文件/注册表函数的名称、新资源名、错误代码;
第二记录单元,用于判断单元判断出所述访问文件/注册表函数的操作功能是对所述句柄进行读取或修改,则记录日志信息包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误(正确)信息;
第三记录单元,用于判断单元判断出的所述访问函数的操作功能是关闭所述句柄,则记录日志信息包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误(正确)信息。
进一步地,调用模块还包括:
获取单元,用于链接单元链接的创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名;
记录单元,用于记录所述资源名与句柄之间的映射关系。
其中,资源名与句柄之间的映射关系记录全局的数据结构中。
本实施例添加模块向应用程序新段,向创建线程函数和访问文件/注册表函数加入代码段,监控模块监控访问文件/注册表函数的操作过程,并记录监控的结果,当应用程序退出时,输出记录的监控结果,由于对具体的正在运行的应用程序进行监控,所以在监控时,占用的系统资源少,不会影响应用程序和操作系统的运行速率。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种监控应用程序行为的方法,其特征在于,所述方法包括:
向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入相同的代码段,所述新段用于调用所述创建线程函数中的代码段和所述访问文件/注册表函数中的代码段,所述代码段用于截取所述创建线程函数和所述访问文件/注册表函数的配置参数,监控所述创建线程函数和所述访问文件/注册表函数的操作过程,并以日志信息的形式记录监控的结果;
应用程序启动后,所述应用程序包括的新段调用创建线程函数包括的代码段,所述创建线程函数包括的代码段获取处理应用程序的线程号;
所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作功能,并记录所述操作功能对应的日志信息;
在所述应用程序退出时,按所述获取的线程号输出所述监控的结果;
其中,所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作功能,并记录所述操作功能对应的日志信息,具体包括:
判断所述调用的访问文件/注册表函数的操作功能;
若是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建所述新句柄,若成功创建新句柄,则记录监控的结果包括获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录监控的结果包括所述获取的线程号、创建线程函数名称、访问文件/注册表函数的名称、新资源名、错误代码;
若是对所述句柄进行读取或修改,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误/正确信息;
若是关闭所述句柄,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误/正确信息。
2.根据权利要求1所述一种监控应用程序行为的方法,其特征在于,所述向应用程序加入新段,具体包括:
在调试符号与输出函数表之间创建了一个新段,所述新段包含有新的可移植的执行体PE头与一个新的函数输入表,所述新的PE头是通过将原PE头复制得到的PE头,同时修改了所述原PE头使之指向所述新的函数输入表。
3.根据权利要求2所述一种监控应用程序行为的方法,其特征在于,所述新的输入表调用所述创建线程函数包括的代码段和所述访问文件/注册表函数包括的代码段。
4.根据权利要求1所述一种监控应用程序行为的方法,其特征在于,所述创建线程函数包括的代码段获取处理应用程序的线程号,具体包括:
所述创建线程函数包括的代码段链接到对应的创建线程函数,所述创建线程函数获取处理所述应用程序的线程号。
5.根据权利要求4所述一种监控应用程序行为的方法,其特征在于,所述创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名;
记录所述资源名与句柄之间的映射关系。
6.根据权利要求5所述一种监控应用程序的方法,其特征在于,所述资源名与句柄之间的映射关系记录在全局的数据结构中。
7.一种监控应用程序行为的装置,其特征在于,所述装置包括:
添加模块,用于向应用程序加入新段,向创建线程函数、访问文件/注册表函数加入相同的代码段,所述新段用于调用所述创建线程函数中的代码段和所述访问文件/注册表函数中的代码段,所述代码段用于截取所述创建线程函数和所述访问文件/注册表函数的配置参数,监控所述创建线程函数和所述访问文件/注册表函数的操作过程,并以日志信息的形式记录监控的结果;
获取模块,用于应用程序启动后,所述应用程序包括的新段调用创建线程函数包括的代码段,所述创建线程函数包括的代码段获取处理应用程序的线程号;
监控模块,包括判断单元、第一记录单元、第二记录单元和第三记录单元;
所述判断单元,用于所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段判断所述调用的访问文件/注册表函数的操作功能;
所述第一记录单元,用于在判断单元判断出所述访问文件/注册表函数的功能是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建所述新句柄,若成功创建新句柄,则记录监控的结果包括记录获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录监控的结果包括所述获取的线程号、创建线程函数的名称、访问文件/注册表的函数的名称、新资源名、错误代码;
所述第二记录单元,用于判断单元判断出所述访问文件/注册表函数的功能是对所述句柄进行读取或修改,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误/正确信息;
所述第三记录单元,用于判断单元判断出的所述访问函数的功能是关闭所述句柄,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误/正确信息;
输出模块,用于在所述应用程序退出时,按所述获取的线程号输出所述监控的结果。
8.根据权利要求7所述一种监控应用程序行为的装置,其特征在于,所述添加模块具体包括:
创建单元,用于在调试符号与输出函数表之间创建了一个新段,所述新段包含有新的PE头与一个新的函数输入表,所述新的PE头是通过将原PE头复制得到的PE头;
修改单元,用于修改所述原PE头使之指向所述新的函数输入表。
9.根据权利要求8所述一种监控应用程序行为的装置,其特征在于,所述新的输入表调用所述创建线程函数包括的代码段和访问文件/注册表函数包括的代码段。
10.根据权利要求7所述一种监控应用程序行为的装置,其特征在于,所述获取模块具体包括:
调用单元,用于应用程序启动后,所述启动的应用程序包括的新段调用创建线程函数包括的代码段;
链接单元,用于所述代码段链接到对应的创建线程函数;
获取单元,用于所述创建线程函数获取处理所述应用程序的线程号。
11.根据权利要求10所述一种监控应用程序行为的装置,其特征在于,所述装置还包括:
创建模块,用于所述创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名,记录所述资源名与句柄之间的映射关系。
12.根据权利11所述一种监控应用程序行为的装置,其特征在于,所述资源名与句柄之间的映射关系记录在全局的数据结构中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100031812A CN101458754B (zh) | 2009-01-09 | 2009-01-09 | 一种监控应用程序行为的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100031812A CN101458754B (zh) | 2009-01-09 | 2009-01-09 | 一种监控应用程序行为的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101458754A CN101458754A (zh) | 2009-06-17 |
CN101458754B true CN101458754B (zh) | 2011-10-26 |
Family
ID=40769606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100031812A Active CN101458754B (zh) | 2009-01-09 | 2009-01-09 | 一种监控应用程序行为的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101458754B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314561B (zh) * | 2010-07-01 | 2014-07-23 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和系统 |
US8560661B2 (en) * | 2010-12-30 | 2013-10-15 | Kaspersky Lab Zao | System and methods for launching antivirus application tasks during computer downtime |
US20140123319A1 (en) * | 2011-06-27 | 2014-05-01 | Nokia Corporation | System, Method and Apparatus For Facilitating Resource Security |
CN102722376B (zh) * | 2012-06-25 | 2015-04-08 | 苏州科达科技股份有限公司 | 基于视频监控绘图的二次编解码方法及其装置 |
CN104281440B (zh) * | 2013-07-03 | 2018-06-01 | 中国移动通信集团公司 | 一种接口实现方法、系统及接口客户端主机 |
CN103631971B (zh) * | 2013-12-20 | 2017-12-08 | 北京奇虎科技有限公司 | 一种可移植的执行体文件的重组方法和装置 |
CN105095741A (zh) * | 2014-05-13 | 2015-11-25 | 北京奇虎测腾科技有限公司 | 一种应用程序的行为监测方法和系统 |
CN104408366B (zh) * | 2014-11-26 | 2017-11-21 | 清华大学 | 基于插装技术的安卓应用程序权限使用行为跟踪方法 |
CN106909458A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 内存管理方法及装置 |
CN109561121B (zh) * | 2017-09-26 | 2021-10-15 | 北京国双科技有限公司 | 监控部署的方法及装置 |
CN110895503B (zh) * | 2018-09-12 | 2024-04-12 | 阿里巴巴(中国)有限公司 | 一种应用的性能监控方法及客户端 |
-
2009
- 2009-01-09 CN CN2009100031812A patent/CN101458754B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101458754A (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101458754B (zh) | 一种监控应用程序行为的方法及装置 | |
Yin et al. | Panorama: capturing system-wide information flow for malware detection and analysis | |
CN100481101C (zh) | 计算机安全启动的方法 | |
CN109388538B (zh) | 一种基于内核的文件操作行为监控方法及装置 | |
US7665098B2 (en) | System and method for monitoring interactions between application programs and data stores | |
US20100122313A1 (en) | Method and system for restricting file access in a computer system | |
US20120239987A1 (en) | System and Method of Manipulating Virtual Machine Recordings for High-Level Execution and Replay | |
CN104268473B (zh) | 应用程序检测方法和装置 | |
CN105210077B (zh) | 信息处理装置以及信息处理方法 | |
US10275595B2 (en) | System and method for characterizing malware | |
Stirparo et al. | In-memory credentials robbery on android phones | |
KR101308866B1 (ko) | 공개형 악성코드 관리 및 분석 시스템 | |
US20230376610A1 (en) | Non-Intrusive Method of Detecting Security Flaws of a Computer Program | |
US20160092313A1 (en) | Application Copy Counting Using Snapshot Backups For Licensing | |
CN111782474A (zh) | 日志处理方法、装置、电子设备和介质 | |
CN108737373B (zh) | 一种针对大型网络设备隐匿技术的安全取证方法 | |
Rana et al. | Automated windows behavioral tracing for malware analysis | |
US20220366048A1 (en) | Ai-powered advanced malware detection system | |
KR102122968B1 (ko) | 애플리케이션 설치 정보 분석 시스템 및 방법 | |
Safitri | A study: Volatility forensic on hidden files | |
KR101103313B1 (ko) | 가상머신 환경에서의 매체제어방법 | |
Ostrovskaya et al. | Practical Memory Forensics: Jumpstart effective forensic analysis of volatile memory | |
KR102560431B1 (ko) | 자식 프로세스의 악성 행위를 검사하기 위한 방법 및 이를 위한 장치 | |
CN112528273B (zh) | 医疗数据的探测方法、装置、介质及电子设备 | |
KR102548984B1 (ko) | 인공지능 모델을 이용하여 악성 문서 파일을 탐지하기 위한 방법 및 이를 위한 장치 |
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 |