[发明专利]堆栈的保护方法及装置有效
申请号: | 201610058946.2 | 申请日: | 2016-01-28 |
公开(公告)号: | CN107015904B | 公开(公告)日: | 2022-04-19 |
发明(设计)人: | 刘雪峰;缪红保 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳鼎合诚知识产权代理有限公司 44281 | 代理人: | 薛祥辉 |
地址: | 518057 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 堆栈 保护 方法 装置 | ||
本发明提供了一种堆栈的保护方法及装置,其中,该方法包括:获取可执行文件中每个函数占用的最大堆栈数值,其中,可执行文件中配置有多个线程,每个线程下挂有一个或多个用于运行堆栈的实体;依据最大堆栈数值计算出一个或多个实体分别占用的最大堆栈计算值;获取用于标识一个或多个实体的符号,并依据符号分别获取一个或多个实体堆栈配置的配置值;在配置值小于计算值时,输出配置值与计算值的比较结果。通过本发明,解决了相关技术中采用动态堆栈检测导致检测滞后,而采用静态堆栈检测的分析是在堆栈内存占用方面的问题,从而方便快捷的实现了对堆栈溢出的检测。
技术领域
本发明涉及计算机领域,具体而言,涉及一种堆栈的保护方法及装置。
背景技术
在可执行程序运行过程中,程序运行所使用的堆栈是一种很重要的资源,如果堆栈溢出,将会带来不可预期、无法挽回的运行异常。因此,对堆栈的保护和检测技术就显得相当重要。
目前,在堆栈检测方面,相关技术中采用以下两种方式进行堆栈检测:
1、动态堆栈检测:动态检测是在程序运行过程中采取一定的手段进行堆栈溢出或者即将溢出预警检测,对程序已经运行到的最大深度所用的堆栈大小检测是直接准确的。但如果一旦发现了溢出,往往需要更换新的程序版本进行解决,即检测是滞后的;并且这种检测只能解决被发现故障的溢出部分,还可能存在程序里没有执行到的一些不能发现的溢出隐患,不是完整性检查。
例如,申请号为:200710003510.4的发明专利《一种检测堆栈帧破坏的方法》提供了一种动态检测堆栈是否被破坏的方法,其采用的手段是:通过编译器在函数中插桩,在入桩函数将堆栈帧备份到栈顶,在出桩函数中判断当前堆栈帧是否一致,从而判定任务堆栈是否被破坏。类似的动态检测方案:最大的问题就是滞后,即版本已经正式环境运行产生溢出了才能知道存在溢出。
2、静态堆栈检测:静态检测主要指程序还没有部署运行时就提前对其进行检测,这样无需实际程序部署环境,只需要普通的电脑就能进行检测。常见的检查手段:可以在编译使用一些编译选项检查,但一般是只是函数级别,并且不是所有编译器都支持;或者使用类似Valgrind工具的massif子功能进行堆栈分析,但其重点还是在堆栈内存占用方面,对堆栈溢出帮助甚微;唯一可能可以准确分析堆栈溢出的是一款商用分析工具stackAnalyzer。这款软件是一个需要付费的商用产品,价格较高,无法对其原理、准确性等进行估用,没有太多应用和指导价值。
针对相关技术中采用动态堆栈检测导致检测滞后,而采用静态堆栈检测的分析是在堆栈内存占用方面的问题,目前尚未存在有效的解决方案。
发明内容
本发明提供了一种堆栈的保护方法及装置,以至少解决相关技术中采用动态堆栈检测导致检测滞后,而采用静态堆栈检测的分析是在堆栈内存占用方面的问题。
根据本发明的一个方面,提供了一种堆栈的保护方法,包括:获取可执行文件中每个函数占用的最大堆栈数值,其中,所述可执行文件中配置有多个线程,每个线程下挂有一个或多个用于运行堆栈的实体;依据所述最大堆栈数值计算出所述一个或多个实体分别占用的最大堆栈计算值;获取用于标识所述一个或多个实体的符号,并依据所述符号分别获取所述一个或多个实体堆栈配置的配置值;在所述配置值小于所述计算值时,输出所述配置值与所述计算值的比较结果。
进一步地,所述获取可执行文件中每个函数占用的最大堆栈数值包括:获取与所述可执行文件对应的汇编源码;扫描所述汇编源码得到所述可执行文件中每个函数占用的所述最大堆栈数值。
进一步地,所述依据所述最大堆栈数值计算出所述一个或多个实体分别占用的最大堆栈计算值包括:查找所述可执行文件中所述函数与子函数之间的调用关系,并依据所述调用关系构造函数调用树;遍历所述函数调用树分别得到所述一个或多个实体在所述函数调用树上占用的最大堆栈计算值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610058946.2/2.html,转载请声明来源钻瓜专利网。