CN101458754A - 一种监控应用程序行为的方法及装置 - Google Patents
一种监控应用程序行为的方法及装置 Download PDFInfo
- Publication number
- CN101458754A CN101458754A CNA2009100031812A CN200910003181A CN101458754A CN 101458754 A CN101458754 A CN 101458754A CN A2009100031812 A CNA2009100031812 A CN A2009100031812A CN 200910003181 A CN200910003181 A CN 200910003181A CN 101458754 A CN101458754 A CN 101458754A
- Authority
- CN
- China
- Prior art keywords
- application program
- function
- new
- thread
- monitoring
- 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.)
- Granted
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 83
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000009471 action Effects 0.000 title description 2
- 230000006870 function Effects 0.000 claims description 209
- 230000006399 behavior Effects 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 16
- 230000002155 anti-virotic effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
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 ProgrammingInterface,应用程序编程接口)函数进行代码插装;
具体地,在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等等。
本发明实施例提供的一种监控应用程序行为的方法可以通过如下的伪代码来实现:
Mine_RegCreateKeyExW(HKEY a0,LPCWSTR a1,DWORD a2,LPWSTR a3,DWORD a4,REGSAM a5,LPSECURITY_ATTRIBUTES a6,PHKEY a7,LPDWORD a8)
{
LONG ErrorNo;
查询HandleToName_map获得a0对应的name,并与a1组合获得要创建(打开)的handle对应的newName;
if(Real_RegOpenKeyEx(a0,a1,0,a5,a7)==ERROR_SUCCESS)
{
获取操作内容,并通过命名管道输出日志信息
returnERROR_SUCCESS;
}
else
{
ErrorNo=Real_CreateKeyExW(a0,a1,a2,a3,a4,a5,a6,a7,a8);
if(ErrorNo==ERROR_SUCCESS)
{
更新HandleToName_map;
}
获取操作内容,并通过命名管道输出日志信息
}
ReturnErrorNo;
}
Mine_CloseHandle(HANDLE a0)
{
LONG ErrorNo;
查询HandleToName_map获得a0对应的name;
ErrorNo=Real_CloseHandle(a0);
if(ErrorNo==ERROR_SUCCESS)
{
更新HandleToName_map;
}
获取操作内容,并通过命名管道输出日志信息
returnErrorNo;
}
Mine_RegEnumKeyExW(HKEY a0,DWORD a1,LPWSTR a2,LPDWORD a3,LPDWORD a4,LPWSTR a5,LPDWORD a6,LPFILETIME a7)
{
LONG ErrorNo;
查询HandleToName_map获得a0对应的name;
ErrorNo=Real_RegEnumKeyExW(a0,a1,a2,a3,a4,a5,a6,a7);
获取操作内容,并通过命名管道输出日志信息;
return ErrorNo;
}
本实施在应用程序和Windows***的API函数中插装代码,应用程序的包括的新段启动调用API函数的代码段,代码段对调用的API函数进行监控,并记录API函数操作的日志信息,在应用程序退出时,将记录的日志信息输出给用户,由于对具体的正在运行的应用程序进行监控,所以占用***的资源少,不会影响操作***与应用程序运行的速度,并且按线程输出日志信息可以更好地帮助用户分析应用程序的行为。
实施例3
如图3所示,本发明实施例提供了一种监控应用程序行为的装置,包括:
添加模块301,用于向应用程序加入新段,向创建线程函数、访问文件/注册表函数加入代码段;
获取模块302,用于应用程序启动后,启动的应用程序包括的新段调用创建线程函数包括的代码段,调用的创建线程函数包括的代码段获取处理应用程序的线程号;
监控模块303,用于新段调用访问文件/注册表函数包括的代码段,调用的访问文件/注册表函数包括的代码段监控访问文件/注册表函数的操作过程,并记录监控的结果;
输出模块304,用于在应用程序退出时,按获取的线程号输出监控的结果。
其中,在本实施例中以日志信息的形式记录监控的结果。
其中,添加模块301具体包括:
创建单元,用于在调试符号与输出函数表之间创建了一个新段,新段包含有新的PE头与一个新的函数输入表,该新的PE头是通过将原PE头复制得到的PE头;
修改单元,用于修改原PE头使之指向新的输入表;
其中,新的输入表调用创建线程函数包括的代码段和访问文件/注册表函数包括的代码段。
获取模块302具体包括:
调用单元,用于应用程序启动后,启动的应用程序包括的新段调用创建线程函数包括的代码段;
链接单元,用于调用单元调用的代码段链接到对应的创建线程函数;
获取单元,用于链接单元链接的创建线程函数获取处理启动的应用程序的线程号。
监控模块具体包括;
判断单元,用于新段调用的访问文件/注册表函数包括的代码段,调用的代码段判断调用的访问文件/注册表函数的操作功能;
第一记录单元,用于在判断单元判断出所述访问文件/注册表函数的操作功能是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建了新句柄,若成功创建新句柄,则记录日志信息包括记录获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录日志信息包括获取的线程号、创建线程函数的名称、访问文件/注册表函数的名称、新资源名、错误代码;
第二记录单元,用于判断单元判断出所述访问文件/注册表函数的操作功能是对所述句柄进行读取或修改,则记录日志信息包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误(正确)信息;
第三记录单元,用于判断单元判断出的所述访问函数的操作功能是关闭所述句柄,则记录日志信息包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误(正确)信息。
进一步地,调用模块还包括:
获取单元,用于链接单元链接的创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名;
记录单元,用于记录所述资源名与句柄之间的映射关系。
其中,资源名与句柄之间的映射关系记录全局的数据结构中。
本实施例添加模块向应用程序新段,向创建线程函数和访问文件/注册表函数加入代码段,监控模块监控访问文件/注册表函数的操作过程,并记录监控的结果,当应用程序退出时,输出记录的监控结果,由于对具体的正在运行的应用程序进行监控,所以在监控时,占用的***资源少,不会影响应用程序和操作***的运行速率。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种监控应用程序行为的方法,其特征在于,所述方法包括:
向应用程序加入新段,向创建线程函数和访问文件/注册表函数加入代码段;
应用程序启动后,所述启动的应用程序包括的新段调用创建线程函数包括的代码段,所述创建线程函数包括的代码段获取处理应用程序的线程号;
所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作过程,并记录监控的结果;
在所述应用程序退出时,按所述获取的线程号输出所述监控的结果。
2.根据权利要求1所述一种监控应用程序行为的方法,其特征在于,所述向应用程序加入新段,具体包括:
在调试符号与输出函数表之间创建了一个新段,所述新段包含有新的可移植的执行体PE头与一个新的函数输入表,所述新的PE头是通过将原PE头复制得到的PE头,同时修改了所述原PE头使之指向所述新的输入表。
3.根据权利要求2所述一种监控应用程序行为的方法,其特征在于,所述新的输入表调用所述创建线程函数包括的代码段和所述访问文件/注册表函数包括的代码段。
4.根据权利要求1所述一种监控应用程序行为的方法,其特征在于,所述所述创建线程函数包括的代码段获取处理应用程序的线程号,具体包括:
所述创建线程函数包括的代码段链接到对应的创建线程函数,所述创建线程函数获取处理所述应用程序的线程号。
5.根据权利要求4所述一种监控应用程序行为的方法,其特征在于,所述创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名;
记录所述资源名与句柄之间的映射关系。
6.根据权利要求1所述一种监控应用程序行为的方法,其特征在于,所述所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作过程,并记录监控的结果,具体包括:
判断所述调用的访问文件/注册表函数的操作功能;
若是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建所述新句柄,若成功创建新句柄,则记录监控的结果包括获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录监控的结果包括所述获取的线程号、创建线程函数名称、访问文件/注册表函数的名称、新资源名、错误代码;
若是对所述句柄进行读取或修改,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误(正确)信息;
若是关闭所述句柄,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、资源名、操作内容、错误(正确)信息。
7.根据权利要求5所述一种监控应用程序的方法,其特征在于,所述资源名与句柄之间的映射关系记录在全局的数据结构中。
8.一种监控应用程序行为的装置,其特征在于,所述装置包括:
添加模块,用于向应用程序加入新段,向创建线程函数、访问文件/注册表函数加入代码段;
获取模块,用于应用程序启动后,所述启动的应用程序包括的新段调用创建线程函数包括的代码段,所述创建线程函数包括的代码段获取处理应用程序的线程号;
监控模块,用于所述新段调用访问文件/注册表函数包括的代码段,所述访问文件/注册表函数包括的代码段监控所述访问文件/注册表函数的操作过程,并记录监控的结果;
输出模块,用于在所述应用程序退出时,按所述获取的线程号输出所述监控的结果。
9.根据权利要求8所述一种监控应用程序行为的装置,其特征在于,所述添加模块具体包括:
创建单元,用于在调试符号与输出函数表之间创建了一个新段,所述新段包含有新的PE头与一个新的函数输入表,所述新的PE头是通过将原PE头复制得到的PE头;
修改单元,用于修改所述原PE头使之指向所述新的输入表。
10.根据权利要求9所述一种监控应用程序行为的装置,其特征在于,所述新的输入表调用所述创建线程函数包括的代码段和访问文件/注册表函数包括的代码段。
11.根据权利要求8所述一种监控应用程序行为的装置,其特征在于,所述获取模块具体包括:
调用单元,用于应用程序启动后,所述启动的应用程序包括的新段调用创建线程函数包括的代码段;
链接单元,用于所述代码段链接到对应的创建线程函数;
获取单元,用于所述创建线程函数获取处理所述应用程序的线程号。
12.根据权利要求11所述一种监控应用程序行为的装置,其特征在于,所述装置还包括:
创建模块,用于所述创建线程函数为所述应用程序打开的文件或注册表项创建句柄,其中,文件名称或注册表项名称统称为资源名,记录所述资源名与句柄之间的映射关系。
13.根据权利要求8所述一种监控应用程序行为的装置,其特征在于,所述监控模块具体包括;
判断单元,用于判断所述调用的访问文件/注册表函数的操作功能;
第一记录单元,用于在判断单元判断出所述访问文件/注册表函数的功能是根据所述应用程序使用的句柄进行创建新句柄的操作,则进一步判断是否成功的创建所述新句柄,若成功创建新句柄,则记录监控的结果包括记录获取的线程号、创建线程函数名称、访问文件/注册表函数名称、新资源名、返回值,否则,记录监控的结果包括所述获取的线程号、创建线程函数的名称、访问文件/注册表的函数的名称、新资源名、错误代码;
第二记录单元,用于判断单元判断出所述访问文件/注册表函数的功能是对所述句柄进行读取或修改,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误(正确)信息;
第三记录单元,用于判断单元判断出的所述访问函数的功能是关闭所述句柄,则记录监控的结果包括所述线程号、创建线程函数名称、访问文件/注册表函数名称、查找的资源名、操作内容、错误(正确)信息。
14.根据权利12所述一种监控应用程序行为的装置,其特征在于,所述资源名与句柄之间的映射关系记录在全局的数据结构中。
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 true CN101458754A (zh) | 2009-06-17 |
CN101458754B 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) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314561A (zh) * | 2010-07-01 | 2012-01-11 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和*** |
CN102609639A (zh) * | 2010-12-30 | 2012-07-25 | 卡巴斯基实验室封闭式股份公司 | 在计算机停用期间启动反病毒应用程序任务的***和方法 |
CN102722376A (zh) * | 2012-06-25 | 2012-10-10 | 苏州科达科技有限公司 | 基于视频监控绘图的二次编解码方法及其装置 |
CN103631971A (zh) * | 2013-12-20 | 2014-03-12 | 北京奇虎科技有限公司 | 一种可移植的执行体文件的重组方法和装置 |
CN103649965A (zh) * | 2011-06-27 | 2014-03-19 | 诺基亚公司 | 用于促进资源安全性的***、方法和装置 |
CN104281440A (zh) * | 2013-07-03 | 2015-01-14 | ***通信集团公司 | 一种接口实现方法、***及接口客户端主机 |
CN104408366A (zh) * | 2014-11-26 | 2015-03-11 | 清华大学 | 基于插装技术的安卓应用程序权限使用行为跟踪方法 |
CN105095741A (zh) * | 2014-05-13 | 2015-11-25 | 北京奇虎测腾科技有限公司 | 一种应用程序的行为监测方法和*** |
CN106909458A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 内存管理方法及装置 |
CN109561121A (zh) * | 2017-09-26 | 2019-04-02 | 北京国双科技有限公司 | 监控部署的方法及装置 |
CN110895503A (zh) * | 2018-09-12 | 2020-03-20 | 传线网络科技(上海)有限公司 | 一种应用的性能监控方法及客户端 |
-
2009
- 2009-01-09 CN CN2009100031812A patent/CN101458754B/zh active Active
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314561B (zh) * | 2010-07-01 | 2014-07-23 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和*** |
CN102314561A (zh) * | 2010-07-01 | 2012-01-11 | 电子科技大学 | 基于api hook的恶意代码自动分析方法和*** |
CN102609639A (zh) * | 2010-12-30 | 2012-07-25 | 卡巴斯基实验室封闭式股份公司 | 在计算机停用期间启动反病毒应用程序任务的***和方法 |
CN102609639B (zh) * | 2010-12-30 | 2016-03-09 | 卡巴斯基实验室封闭式股份公司 | 在计算机停用期间启动反病毒应用程序任务的***和方法 |
CN103649965A (zh) * | 2011-06-27 | 2014-03-19 | 诺基亚公司 | 用于促进资源安全性的***、方法和装置 |
CN102722376B (zh) * | 2012-06-25 | 2015-04-08 | 苏州科达科技股份有限公司 | 基于视频监控绘图的二次编解码方法及其装置 |
CN102722376A (zh) * | 2012-06-25 | 2012-10-10 | 苏州科达科技有限公司 | 基于视频监控绘图的二次编解码方法及其装置 |
CN104281440A (zh) * | 2013-07-03 | 2015-01-14 | ***通信集团公司 | 一种接口实现方法、***及接口客户端主机 |
CN104281440B (zh) * | 2013-07-03 | 2018-06-01 | ***通信集团公司 | 一种接口实现方法、***及接口客户端主机 |
CN103631971A (zh) * | 2013-12-20 | 2014-03-12 | 北京奇虎科技有限公司 | 一种可移植的执行体文件的重组方法和装置 |
CN103631971B (zh) * | 2013-12-20 | 2017-12-08 | 北京奇虎科技有限公司 | 一种可移植的执行体文件的重组方法和装置 |
CN105095741A (zh) * | 2014-05-13 | 2015-11-25 | 北京奇虎测腾科技有限公司 | 一种应用程序的行为监测方法和*** |
CN104408366A (zh) * | 2014-11-26 | 2015-03-11 | 清华大学 | 基于插装技术的安卓应用程序权限使用行为跟踪方法 |
CN106909458A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 内存管理方法及装置 |
CN109561121A (zh) * | 2017-09-26 | 2019-04-02 | 北京国双科技有限公司 | 监控部署的方法及装置 |
CN109561121B (zh) * | 2017-09-26 | 2021-10-15 | 北京国双科技有限公司 | 监控部署的方法及装置 |
CN110895503A (zh) * | 2018-09-12 | 2020-03-20 | 传线网络科技(上海)有限公司 | 一种应用的性能监控方法及客户端 |
CN110895503B (zh) * | 2018-09-12 | 2024-04-12 | 阿里巴巴(中国)有限公司 | 一种应用的性能监控方法及客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN101458754B (zh) | 2011-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101458754B (zh) | 一种监控应用程序行为的方法及装置 | |
US9063766B2 (en) | System and method of manipulating virtual machine recordings for high-level execution and replay | |
US7984513B1 (en) | Method and system for using a rules engine for enforcing access and usage policies in rights-aware applications | |
US6237143B1 (en) | Method and system for monitoring and capturing all file usage of a software tool | |
RU2622627C2 (ru) | Способ обнаружения вредоносных исполняемых файлов, содержащих интерпретатор, посредством комбинирования эмуляторов | |
US7665098B2 (en) | System and method for monitoring interactions between application programs and data stores | |
US8271995B1 (en) | System services for native code modules | |
US20070288937A1 (en) | Virtual Device Driver | |
WO2020019490A1 (zh) | 一种接口测试方法、电子设备及存储介质 | |
CN103927198A (zh) | 一种软件清理方法及装置 | |
CN104268473B (zh) | 应用程序检测方法和装置 | |
CN106203116A (zh) | 一种恶意软件的检测方法及装置 | |
RU2634177C1 (ru) | Система и способ обнаружения нежелательного программного обеспечения | |
CN106844182B (zh) | 用于记录用户行为的方法、***及移动终端 | |
US20230039072A1 (en) | System and method for real-time forensic instrumentation | |
CN105210077B (zh) | 信息处理装置以及信息处理方法 | |
WO2010002185A2 (ko) | 응용프로그램에서 사용되는 임시 파일의 자동 완전 삭제 방법 | |
CN109359092A (zh) | 文件管理方法、桌面显示方法、装置、终端及介质 | |
US10275595B2 (en) | System and method for characterizing malware | |
Stirparo et al. | In-memory credentials robbery on android phones | |
CN108737373B (zh) | 一种针对大型网络设备隐匿技术的安全取证方法 | |
KR101055287B1 (ko) | 응용프로그램에서 사용되는 임시 파일의 관리 방법 | |
KR20130075300A (ko) | 공개형 악성코드 관리 및 분석 시스템 | |
CN109189652A (zh) | 一种封闭网络终端行为数据的采集方法及*** | |
CN111782474A (zh) | 日志处理方法、装置、电子设备和介质 |
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 |