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.
【技术实现步骤摘要】
一种函数调用时间的监控方法及装置
本专利技术涉及计算机安全领域,尤其是一种函数调用时间的监控方法及装置。
技术介绍
在函数保护中,如果对函数的调用时间没有清楚的认识,盲目地对函数进行加壳保护,如代码碎片化、代码虚拟化、代码移植或者代码混淆,对于加保护后的函数,如果调用时间在保护前与保护后的差距较大,则说明加保护极大影响了函数的运行时间,应该取消对函数的保护,如果调用时间在保护前与保护后的差距不大,则说明加保护没有对函数产生很大影响,无需取消对函数的保护,因此,在对函数的调用时间不了解的情况下,很容易无意中对系统函数或者操作中不希望加保护的调用的函数进行了保护,这样不仅影响了加壳后程序的体积,同时还会降低加壳后程序的运行效率。如果开发人员在程序运行过程中保护了过多的不希望加保护的函数,会使得保护后的可执行程序的体积加大,同时会降低保护后的可执行程序的运行效率。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种函数调用时间的监控方法及装置,能够实现函数调用时间的监控,从而更好了解函数是否需要加保护。本专利技术实施例的一方面,本专利技术提供了一种函数调用时间的监控方法,包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。进一步地,在所述启动所述监控进程之前,所述方 ...
【技术保护点】
一种函数调用时间的监控方法,其特征在于,包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。
【技术特征摘要】
1.一种函数调用时间的监控方法,其特征在于,包括:通过挂起的方式创建监控进程,所述监控进程中包含有预设容量的动态内存;将用于监控函数调用时间的预设分析代码载入所述动态内存中;启动所述监控进程,根据所述预设分析代码加载需要注入至所述监控进程的动态链接库;根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间。2.根据权利要求1所述的方法,其特征在于,在所述启动所述监控进程之前,所述方法还包括:创建内存映射文件以及时间统计结果事件,所述内存映射文件中存储有调用函数的函数信息;传递所述监控进程的标识信息,根据所述标识信息加载所述内存映射文件以及时间统计结果事件;根据所述内存映射文件将程序执行的起始地址添加至所述预设分析代码中,当启动所述监控进程时跳转至程序执行的起始地址。3.根据权利要求1所述的方法,其特征在于,所述根据所述动态链接库中的监控函数块监控所述调用函数被调用的起始时间和结束时间,得到调用函数的调用时间包括:启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块;根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间。4.根据权利要求3所述的方法,其特征在于,在所述启动所述动态链接库中的函数hook被保护程序的函数块作为监控函数块之前,所述方法还包括:根据所述调用函数的函数信息获取所述调用函数的函数类型;当所述调用函数的函数类型为可直接执行函数时,通过模块句柄载入动态链接库;当所述调用函数的函数类型为不可直接执行函数时,通过加载模块载入动态链接库。5.根据权利要求3所述的方法,其特征在于,所述根据所述函数hook被保护程序的函数块监控所述调用函数被调用的起始时间和结束时间,得到所述调用函数的调用时间包括:当调用函数被调用时,通过所述函数hook被保护程序的函数块获取所述调用函数的起始地址;从堆栈中读取指定存储空间中的地址取值,所述指定存储空间是用于存储函数返回地址的;查找所述地址取值所指向指令的上一条指令所指向的地址;判断所述上一条指令所指向的地址是否与所述调用函数的起始地址相同,如果相同,则监控所述调用函数被调用的起始时...
【专利技术属性】
技术研发人员:孙吉平,尹永政,
申请(专利权)人:北京深思数盾科技股份有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。