一种监控程序的方法及装置制造方法及图纸

技术编号:15437775 阅读:95 留言:0更新日期:2017-05-26 03:47
本发明专利技术公开了一种监控程序的方法及装置,属于计算机技术领域。本发明专利技术的方法包括加载被监控程序;在运行被监控程序时,对被监控程序调用的每个应用程序编程接口API函数插桩;获取所述API函数的函数名;根据所述API函数的函数名判断所述API函数是否满足预设的判断逻辑;若是,则判定被监控程序发生动态链接库DLL注入;根据预设的检测逻辑检测所述DLL注入的注入类型;获取注入信息。本发明专利技术能够有效判断被监控程序是否被注入DLL模块及注入方式,且本发明专利技术仅需输出与判断逻辑相符的API函数的信息,而对其他API函数则不进行处理和输出,从而显著提高了监控效率。

Method and device for monitoring program

The invention discloses a method and a device for monitoring programs, belonging to the technical field of computers. The method of the invention includes loading a monitored program; in operation by monitoring program, application programming interface for each API function program call monitoring instrumentation; obtaining the API function's name; according to the function of the API function of the API function name to determine whether meet the logic presupposition; if so, it is determined to be monitoring program dynamic link library DLL injection; according to the preset detection logic detects the DLL injection type; get into information. The invention can effectively judge whether the monitoring program into the DLL module and the injection mode, the invention only needs to output information and judgment logic API function with the API function, while the other is not processed and output, thereby significantly improving the monitoring efficiency.

【技术实现步骤摘要】
一种监控程序的方法及装置
本专利技术涉及计算机
,尤其涉及一种监控程序的方法及装置。
技术介绍
在现有技术中,出于对性能的考虑,设备中的主动防御模块只检查程序的可执行文件(例如,exe文件)是否可以信任,而不检查程序加载的DLL(DynamicLinkLibrary,动态链接库)文件。DLL注入是指将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。现有技术中主动防御的上述特点被一些恶意程序所利用,恶意程序使用DLL注入技术将木马DLL与可信任的白程序打包在一起,当白程序被执行时,木马DLL就会被加载,从而实现利用白程序突破主动防御的目的。现有技术存在利用插桩工具实现对可疑程序DLL注入代码的提取,其前提是要有DLL注入代码,大多数情况下,我们只有正常进程即被监控的进程,这种情况该检测方式就不起作用了。插桩是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。另外,现有技术对可疑程序执行的每个API都进行插桩监控,而一个程序API数量众多,受限于插桩工具的效率,该方法效率及低,实用性能太差。其中,API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数。
技术实现思路
本专利技术提供了一种监控程序的方法和装置,以至少解决在预先没有获取注入代码的前提下,主动监控程序中是否发生DLL注入,并判断注入类型及是否为恶意注入。根据本专利技术的一个方面,提供了一种监控程序的方法,包括:确定被监控程序;加载被监控程序;在运行被监控程序时,对被监控程序调用的每个应用程序编程接口API函数插桩;获取所述API函数的函数名;根据所述API函数的函数名判断所述API函数是否满足预设的判断逻辑;若是,则判定被监控程序发生动态链接库DLL注入;根据预设的检测逻辑检测所述DLL注入的注入类型;获取注入到被监控程序的DLL模块的注入信息;所述注入信息包括满足预设的判断逻辑的API函数的参数、函数名、模块名称和堆栈信息。根据本专利技术的另一方面,提供了一种监控程序的装置,包括:确定模块,用于确定被监控程序;加载模块,用于加载被监控程序;插桩模块,用于在运行被监控程序时,对被监控程序调用的的每个应用程序编程接口API函数插桩;函数名获取模块,用于获取所述API函数的函数名;注入判断模块,用于根据所述API函数的函数名判断所述API函数是否满足预设的判断逻辑;若是,则判定被监控程序发生动态链接库DLL注入;注入类型获取模块,用于根据预设的检测逻辑检测所述DLL注入的注入类型;注入信息获取模块,用于获取注入到被监控程序的DLL模块的注入信息;所述注入信息包括满足预设的判断逻辑的API函数的参数、函数名、模块名称和堆栈信息。根据本专利技术的一种监控程序的方法及装置,通过确定被监控程序;加载被监控程序;在运行被监控程序时,对被监控程序调用的每个应用程序编程接口API函数插桩;获取所述API函数的函数名;根据所述API函数的函数名判断所述API函数是否满足预设的判断逻辑;若是,则判定被监控程序发生动态链接库DLL注入;根据预设的检测逻辑检测所述DLL注入的注入类型;获取注入到被监控程序的DLL模块的注入信息;所述注入信息包括满足预设的判断逻辑的API函数的参数、函数名、模块名称和堆栈信息。本专利技术能够有效判断被监控程序是否被注入DLL模块,何时被注入,以及注入方式,实现了对注入代码的提取和注入类型的判断。采用本专利技术预设的判断逻辑,本专利技术仅需输出与判断逻辑相符的DLL模块中的API函数的信息,而对其他API函数则不进行处理和输出,从而显著提高了监控效率。另外,在本专利技术中,插桩工具可以同时自动对大批量的程序进行监控,代码注入提取,输出大批日志文件,减少了人工干预,提高了效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。图1是根据本专利技术实施例的监控程序的方法的计算机终端的硬件结构框图;图2是根据本专利技术实施例1的监控程序的方法的流程图;图3是根据本专利技术实施例1的步骤S208的流程图;图4是根据本专利技术实施例1的方法的又一流程图;图5是根据本专利技术实施例1的步骤S209的流程图;图6是根据本专利技术实施例1的步骤S209的又一流程图;图7是根据本专利技术实施例2的监控程序的装置的框图;图8是根据本专利技术实施例的计算机终端的结构框图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1根据本专利技术实施例,提供了一种监控程序的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是根据本专利技术实施例的监控程序的方法的计算机终端的硬件结构框图。如图1所示,计算机终端100可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端100还可包括比图2中所示更多或者更少的组件,或者具有与图1所示不同的配置。存储器104可用于存储应用软件的软件程序以及模块,如本专利技术实施例中的监控程序的方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的监控程序的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可本文档来自技高网
...
一种监控程序的方法及装置

【技术保护点】
一种监控程序的方法,其特征在于,包括:确定被监控程序;加载被监控程序;在运行被监控程序时,对被监控程序调用的每个应用程序编程接口API函数插桩;获取所述API函数的函数名;根据所述API函数的函数名判断所述API函数是否满足预设的判断逻辑;若是,则判定被监控程序发生动态链接库DLL注入;根据预设的检测逻辑检测所述DLL注入的注入类型;获取注入到被监控程序的DLL模块的注入信息;所述注入信息包括满足预设的判断逻辑的API函数的参数、函数名、模块名称和堆栈信息。

【技术特征摘要】
1.一种监控程序的方法,其特征在于,包括:确定被监控程序;加载被监控程序;在运行被监控程序时,对被监控程序调用的每个应用程序编程接口API函数插桩;获取所述API函数的函数名;根据所述API函数的函数名判断所述API函数是否满足预设的判断逻辑;若是,则判定被监控程序发生动态链接库DLL注入;根据预设的检测逻辑检测所述DLL注入的注入类型;获取注入到被监控程序的DLL模块的注入信息;所述注入信息包括满足预设的判断逻辑的API函数的参数、函数名、模块名称和堆栈信息。2.根据权利要求1所述的监控程序的方法,其特征在于,所述获取注入到被监控程序的DLL模块的注入信息之后,还包括:跟踪执行注入到被监控程序的DLL模块,提取所述DLL模块中执行的API函数序列,根据所述API函数序列判断注入到被监控程序的DLL模块是否为恶意进程。3.根据权利要求1所述的监控程序的方法,其特征在于,所述预设的判断逻辑为:检测到对被监控程序内存写入数据后调用CreateRemoteThread函数和LoadLibrary函数;或者,检测到对被监控程序内存写入数据后调用CreateRemoteThreadEx函数和LoadLibrary函数;或者,检测到APC队列中调用LoadLibrary函数,且在所述LoadLibrary函数调用之前发生过软中断。4.根据权利要求3所述的监控程序的方法,其特征在于,所述根据预设的检测逻辑检测所述DLL注入的注入类型,包括:提取满足预设的判断逻辑的的API函数的函数名;若检测到对被监控程序内存写入数据后调用CreateRemoteThread函数和LoadLibrary函数,或者检测到对被监控程序内存写入数据后调用CreateRemoteThreadEx函数和LoadLibrary函数,则判定所述DLL注入的注入类型为远程线程注入;若检测到到APC队列中调用LoadLibrary函数,且在所述LoadLibrary函数执行之前发生过软中断,则判定所述DLL注入的注入类型为异步调用过程APC注入。5.根据权利要求1所述的监控程序的方法,其特征在于,获取注入到被监控程序的DLL模块的注入信息包括:获取满足预设的判断逻辑的API函数的参数、函数名、模块名称和堆栈信息;定位注入到被监控程序的DLL模块的注入点;根据所述API函数的参数、函数名、模块名称和堆栈信息获取所述注入点的信息。6.根据权利要求2所述的监控程序的方法,其特征在于,所述跟踪执行注入到被监控程序的DLL模块,提取所述DLL模块执行的API函数序列,根据所述API函数序列判断注入到被监控程序的DLL模块是否为恶意进程,包括:跟踪执行注入到被监控程序的DLL模块;提取所述DLL模块中的API函数的函数名称和API函数的调用序列;在预设的恶意序列库中查找所述API函数的调用序列,若找到,则判定所述DLL模块是恶意进程;若找不到,则判定所述DLL模块不是恶意进程。7.根据权利要求6所述的监控程序的方法,其特征在于,所述跟踪执行注入到被监控程序的DLL模块之后,还...

【专利技术属性】
技术研发人员:向琦董文辉王有富林智鑫
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1