[发明专利]一种栈安全检测方法与系统在审
| 申请号: | 201410696490.3 | 申请日: | 2014-11-26 |
| 公开(公告)号: | CN104331370A | 公开(公告)日: | 2015-02-04 |
| 发明(设计)人: | 李智荣 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 上海光华专利事务所 31219 | 代理人: | 余明伟 |
| 地址: | 201616 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 安全 检测 方法 系统 | ||
技术领域
本发明涉及一种计算机技术领域,特别是涉及一种栈安全检测方法与系统。
背景技术
在计算机科学领域中,'调用栈'(Call Stack)是用于存储子程序信息的一类栈,别称执行栈(execution stack)、控制栈(control stack)、运行时栈(run-time stack)与机器栈(machine stack),在英语中亦经常简称为“栈”(“the stack”)。调用栈的维护对多数软件的正常运转有着重要意义,但一般高级语言都会隐藏其细节并自动进行维护。
嵌入式系统中每一个任务的栈空间都很小,在系统运行过程中很容易产生任务栈溢出导致系统复位,影响系统的稳定性。系统运行过程中一个任务的栈溢出通常由两个原因引起:一是调用的函数层次过深或者调用的函数申请的栈空间太大。二是函数调用环路,如递归调用。以上两个原因以第二个原因导致系统复位更为常见,因此在嵌入式系统的开发过程中都会尽量避免直接或者间接的函数递归调用。
鉴于此,为了确定或避免函数调用环路引发栈溢出问题,如何对系统加载运行的映像文件进行函数调用环路检测成为了本领域技术人员亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种栈安全检测方法及系统,用于解决现有技术中运行映像文件出现函数调用环路而引发的栈溢出难以定位的问题。
为实现上述目的及其他相关目的,本发明提供一种栈安全检测方法,所述栈安全检测方法包括:加载可执行文件;以所述可执行文件的入口函数为起点获取所述可执行文件的函数调用树,并判断是否存在函数环路调用;当所述可执行文件的函数调用树中存在所述函数环路调用时,标识所述可执行文件存在函数环路调用。
可选地,所述获取所述可执行文件的函数调用树的具体实现包括:以所述可执行文件的入口函数为起点,通过反汇编分析方法递归获取所述可执行文件中的一个函数所调用的所有子函数,以获取函数调用树。
可选地,所述反汇编分析方法与所述可执行文件的机器语言一一对应。
可选地,所述判断是否存在函数环路调用的具体实现为:检测函数调用树中每一个函数所调用的子函数节点是否在所述可执行文件入口函数到所述函数的运行路径上出现过,如果有出现过则为存在函数环路调用。
可选地,所述可执行文件包括嵌入式系统中的映像文件。
本发明还提供一种栈安全检测系统,所述栈安全检测系统包括:可执行文件加载模块,用于加载待分析的可执行文件;函数调用分析模块,与所述可执行文件加载模块相连,用于以所述可执行文件的入口函数为起点获取所述可执行文件的函数调用树,并判断所述函数调用树中是否存在函数调用环路;当所述可执行文件的函数调用树中存在所述函数环路调用时,标识所述可执行文件存在函数环路调用。
可选地,所述函数调用分析模块包括反汇编单元,所述反汇编单元用于获取所述可执行文件的一个函数所调用的所有子函数;所述调用分析函数通过所述反汇编单元获取所述可执行文件的函数调用树。
可选地,所述反汇编单元与所述可执行文件的机器语言一一对应。
可选地,所述判断是否存在函数环路调用的具体实现为:检测函数调用树中每一个函数所调用的子函数节点是否在所述可执行文件入口函数到所述函数的运行路径上出现过,如果有出现过则为存在函数环路调用。
可选地,所述可执行文件包括嵌入式系统中的映像文件。
如上所述,本发明的一种栈安全检测方法及系统,具有以下有益效果:通过一种简单且容易实现的技术方案,运用反汇编手段分析系统的可加载映像文件,检测出任务中存在的环路调用点,为系统任务栈使用或者任务栈溢出问题的定位分析提供有效的数据,可以加快相关问题的定位。
附图说明
图1显示为本发明的一种栈安全检测方法的一实施例的方法示意图。
图2显示为本发明的一种栈安全检测方法的一实施例的方法步骤示意图。
图3显示为本发明的一种栈安全检测方法的一实施例的方法步骤示意图。
图4显示为本发明的一种栈安全检测方法的一实施例的方法步骤示意图。
图5显示为本发明的一种栈安全检测方法的一实施例的方法步骤示意图。
图6显示为本发明的一种栈安全检测系统的一实施例的模块示意图。
元件标号说明
1 栈安全检测系统
11 可执行文件加载模块
12 函数调用分析模块
S1~S3 步骤
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410696490.3/2.html,转载请声明来源钻瓜专利网。





