一种函数调用时间的监控方法及装置制造方法及图纸

技术编号:16818967 阅读:25 留言:0更新日期:2017-12-16 12:20
本发明专利技术公开了一种函数调用时间的监控方法及装置,涉及计算机安全技术领域,主要目的是能够实现函数调用时间的监控,从而更好了解函数是否需要加保护。所述方法包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。本发明专利技术主要用于函数的调用时间的分析。

A monitoring method and device for function call time

The invention discloses a monitoring method and device for function call time, and relates to the field of computer security technology. The main purpose is to monitor the time of function call, so as to better understand whether functions need to add protection. The method includes: creating a monitoring process by suspending the way, the monitoring process contains preset dynamic memory capacity; presupposition analysis will be used to monitor the function call time code loaded into the dynamic memory; the monitoring process is started, according to the preset analysis code loading need to inject a DLL to the monitoring process; according to the dynamic link library in monitoring function block monitoring the calling function is called the start time and end time, get the call function call time. This invention is mainly used for the analysis of the call time of the function.

【技术实现步骤摘要】
一种函数调用时间的监控方法及装置
本专利技术涉及计算机安全领域,尤其是一种函数调用时间的监控方法及装置。
技术介绍
在函数保护中,如果对函数的调用时间没有清楚的认识,盲目地对函数进行加壳保护,如代码碎片化、代码虚拟化、代码移植或者代码混淆,对于加保护后的函数,如果调用时间在保护前与保护后的差距较大,则说明加保护极大影响了函数的运行时间,应该取消对函数的保护,如果调用时间在保护前与保护后的差距不大,则说明加保护没有对函数产生很大影响,无需取消对函数的保护,因此,在对函数的调用时间不了解的情况下,很容易无意中对系统函数或者操作中不希望加保护的调用的函数进行了保护,这样不仅影响了加壳后程序的体积,同时还会降低加壳后程序的运行效率。如果开发人员在程序运行过程中保护了过多的不希望加保护的函数,会使得保护后的可执行程序的体积加大,同时会降低保护后的可执行程序的运行效率。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种函数调用时间的监控方法及装置,能够实现函数调用时间的监控,从而更好了解函数是否需要加保护。本专利技术实施例的一方面,本专利技术提供了一种函数调用时间的监控方法,包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。进一步地,在所述启动所述监控进程之前,所述方法还包括:创建内存映射文件以及时间统计结果事件,所述内存映射文件中存储有调用函数的函数信息;传递所述监控进程的标识信息,根据所述标识信息加载所述内存映射文件以及时间统计结果事件;根据所述内存映射文件将程序执行的起始地址添加至所述预设分析代码中,当启动所述监控进程时跳转至程序执行的起始地址。进一步地,所述根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间包括:启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块;根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间。进一步地,在所述启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块之前,所述方法还包括:根据所述调用函数的函数信息获取所述调用函数的函数类型;当所述调用函数的函数类型为可直接执行函数时,通过模块句柄载入动态链接库;当所述调用函数的函数类型为不可直接执行函数时,通过加载模块载入动态链接库。进一步地,所述根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间包括:当调用函数被调用时,通过所述函数hook被保护程序的函数块获取所述调用函数的起始地址;从堆栈中读取指定存储空间中的地址取值,所述指定存储空间是用于存储函数返回地址的;查找所述地址取值所指向指令的上一条指令所指向的地址;判断所述上一条指令所指向的地址是否与所述调用函数的起始地址相同,如果相同,则监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。依据本专利技术实施例的另一方面,本专利技术实施例提供了一种函数调用时间的监控装置,包括:第一创建单元,用于通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;载入单元,用于将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动单元,用于启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;监控单元,用于根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。进一步地,所述装置还包括:第二创建单元,用于创建内存映射文件以及时间统计结果事件,所述内存映射文件中存储有调用函数的函数信息;加载单元,用于传递所述监控进程的标识信息,根据所述标识信息加载所述内存映射文件以及时间统计结果事件;添加单元,用于根据所述内存映射文件将程序执行的起始地址添加至所述预设分析代码中,当启动所述监控进程时跳转至程序执行的起始地址。进一步地,所述监控单元包括:启动模块,用于启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块;监控模块,用于根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间。进一步地,所述启动模块,还用于在所述启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块之前,根据所述调用函数的函数信息获取所述调用函数的函数类型;当所述调用函数的函数类型为可直接执行函数时,通过模块句柄载入动态链接库;当所述调用函数的函数类型为不可直接执行函数时,通过加载模块载入动态链接库。进一步地,所述监控模块,还用于当调用函数被调用时,通过所述函数hook被保护程序的函数块获取所述调用函数的起始地址;从堆栈中读取指定存储空间中的地址取值,所述指定存储空间是用于存储函数返回地址的;查找所述地址取值所指向指令的上一条指令所指向的地址;判断所述上一条指令所指向的地址是否与所述调用函数的起始地址相同,如果相同,则监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。借由上述技术方案,本专利技术提供的一种函数调用时间的监控方法及装置,通过将用于监控函数调用时间的预设分析代码载入监控进程中,以便于在程序执行到该调用函数时,根据动态链接库中的监控函数块监控调用函数被调用的起始时间和结束时间,能够实时监控调用函数的调用时间。与现有技术的函数调用时间的监控方法相比,本专利技术实施例通过在程序运行过程中对调用函数的调用时间进行监控,能够得到程序执行过程中函数的调用时间,进而可以通过函数的调用时间了解函数保护之前和保护之后调用时间的差距,进而更好了解函数是否需要加保护,提高用户体验,另外,根据函数的调用时间可以实时对程序的函数模块进行优化,提高可执行程序的运行效率,极大地节省了技术人员的时间。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了本专利技术实施例提供的一种函数调用时间的监控方法流程示意图;图2示出了本专利技术实施例提供的另一种函数调用时间的监控方法流程示意图;图3示出了本专利技术实施例提供的一种函数调用时间的监控装置结构示意图;图4示出了本专利技术实施例提供的另一种函数调用时间的监控装置结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本本文档来自技高网...
一种函数调用时间的监控方法及装置

【技术保护点】
一种函数调用时间的监控方法,其特征在于,包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。

【技术特征摘要】
1.一种函数调用时间的监控方法,其特征在于,包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。2.根据权利要求1所述的方法,其特征在于,在所述启动所述监控进程之前,所述方法还包括:创建内存映射文件以及时间统计结果事件,所述内存映射文件中存储有调用函数的函数信息;传递所述监控进程的标识信息,根据所述标识信息加载所述内存映射文件以及时间统计结果事件;根据所述内存映射文件将程序执行的起始地址添加至所述预设分析代码中,当启动所述监控进程时跳转至程序执行的起始地址。3.根据权利要求1所述的方法,其特征在于,所述根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间包括:启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块;根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间。4.根据权利要求3所述的方法,其特征在于,在所述启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块之前,所述方法还包括:根据所述调用函数的函数信息获取所述调用函数的函数类型;当所述调用函数的函数类型为可直接执行函数时,通过模块句柄载入动态链接库;当所述调用函数的函数类型为不可直接执行函数时,通过加载模块载入动态链接库。5.根据权利要求3所述的方法,其特征在于,所述根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间包括:当调用函数被调用时,通过所述函数hook被保护程序的函数块获取所述调用函数的起始地址;从堆栈中读取指定存储空间中的地址取值,所述指定存储空间是用于存储函数返回地址的;查找所述地址取值所指向指令的上一条指令所指向的地址;判断所述上一条指令所指向的地址是否与所述调用函数的起始地址相同,如果相同,则监控所述调用函数被调用的起始时...

【专利技术属性】
技术研发人员:孙吉平尹永政
申请(专利权)人:北京深思数盾科技股份有限公司
类型:发明
国别省市:北京,11

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

1