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函数的参数、函数名、模块名称和堆栈信息。
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。