[发明专利]堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置在审

专利信息
申请号: 201210041865.3 申请日: 2012-02-22
公开(公告)号: CN103294517A 公开(公告)日: 2013-09-11
发明(设计)人: 蒋健;纪金松;官孝峰;张嗣元 申请(专利权)人: 国际商业机器公司
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 中国国际贸易促进委员会专利商标事务所 11038 代理人: 金晓
地址: 美国*** 国省代码: 暂无信息
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 堆栈 溢出 保护装置 保护 方法 相关 编译器 计算 装置
【说明书】:

发明涉及一种堆栈溢出保护装置和堆栈保护方法。根据本发明,提供了一种堆栈溢出保护装置,包括:划分单元,被配置为根据函数中的字符串型操作将输入代码中的至少一个函数划分为多个代码区域;以及堆栈保护单元,被配置为将对于所述函数的堆栈保护移动到包含字符串型操作的代码区域中。本发明还提供了一种堆栈保护方法。

技术领域

本发明总体来说涉及堆栈(stack)溢出保护装置和堆栈保护方法。更具体的,本发明涉及利用函数级变换来优化堆栈溢出保护。

背景技术

堆栈溢出是在设计程序时必须考虑的因素。附图1A-1C示意性地示出了一次堆栈溢出的情况。图1A示出了堆栈帧的示例性的结构。在图1A中,堆栈中包含了被调用者的帧、变量、返回地址、帧指针、本地数据和调用者帧。如图所示,当发生函数调用时,被调用者帧可以通过帧指针找到调用者帧的位置。变量、返回地址和帧指针都在函数调用时被使用。

如图1B所示,函数可能涉及字符串型操作,例如char A[100]表示包含100个字符的数组。在函数包含字符串型操作时,有可能导致堆栈溢出。图1C示出了示例性的堆栈溢出的情况。当向字符串A[100]写入多于100个字符(例如发生错误或遇到期望之外的情况)时,如附图1C所示,多出的字符将超出字符串A的范围,覆盖堆栈中的例如本地数据、帧指针、返回地址等。也即,发生了堆栈溢出。这可能导致本地数据被破坏、函数调用缺少了必要的返回条件等。因此,在编译器处理输入代码时必须考虑防止堆栈溢出。

堆栈保护是几乎所有商业的编译器(例如,GNU的GCC编译器,XL编译器,Microsoft的Visual Studio编译器)都提供的功能。在现有技术中存在多种堆栈保护的方法,典型的是插入保护码(guard)。在附图2A中示出了保护码应用的例子。对于需要保护的堆栈,可以插入适当的保护码并校验该保护码以实现堆栈保护。例如,如图2A所示,在进入函数时在堆栈中适当的位置插入值0x1234。如果函数中的字符串被过度地写入,则该值会被覆盖。因此在离开该函数时,如图2B所示,如果检测到该保护码被改写(在图中被示例性地改变为0x5678),那么就检测到了堆栈溢出的情况。编译器负责为源代码加入附加的代码以实现上述堆栈保护工作。

然而,为了防止堆栈溢出,对于涉及字符串型操作的每一个函数都必须设置并校验保护码。由于编译器引入了额外的操作,这带来了显著的性能损失。另一方面,评价编译器性能优劣的一个重要方面就是对源代码编译之后产生的目标程序的运行性能。

在现有技术的编译器中,已经提出了对于堆栈溢出保护的一些优化方法。例如,在考虑堆栈保护时,可以将不涉及字符串型操作的函数视为是安全的。这样,可以避免对于那些函数进行堆栈保护,从而避免性能损失。然而,这种方法仅仅对不涉及字符串型操作的函数有效。对于涉及字符串型操作的函数则必须予以全部保护。

应当理解,此处使用的术语“字符串型操作”应当被广义地解读。其不仅仅包含通常的字符串操作(例如char),而是意在涵盖所有可能导致堆栈溢出的操作。举例来说,指针所指向的对象有可能也是字符串操作。故此,编译器未知的指针也属于可能导致堆栈溢出的操作。本领域技术人员将会知道其他可能导致堆栈溢出的操作。

发明内容

可以看出,现有的堆栈保护策略不涉及利用改变整体函数结构、函数调用关系或者函数体内部流程图来避免不必要的安全监测和保护带来的性能损失。本发明对现有技术的上述技术进行了改进,以提供一种编译性能更好,执行效率更高的编译装置及其方法。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201210041865.3/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top