[发明专利]栈溢出位置的检测方法及装置有效
申请号: | 201510080254.3 | 申请日: | 2015-02-13 |
公开(公告)号: | CN104714885B | 公开(公告)日: | 2017-12-01 |
发明(设计)人: | 李明浩;甘晓霖;王舒捷 | 申请(专利权)人: | 小米科技有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/52 |
代理公司: | 北京尚伦律师事务所11477 | 代理人: | 代治国 |
地址: | 100085 北京市海淀区清*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 溢出 位置 检测 方法 装置 | ||
技术领域
本公开涉及终端设备开发技术领域,尤其涉及栈溢出位置的检测方法及装置。
背景技术
随着智能手机的普及,近几年掀起了移动开发的热潮,特别是android系统的开源,使得各个厂商的开发手机系统的成本变得很低,同时也引来的越来越多的开发人员进入到这一嵌入式领域开发平台,嵌入式领域主要是基于arm架构的嵌入式开发。arm编程以及调试技术已经越来越成为当今移动开发领域的核心竞争力。快速地开发以及调试程序是每个移动开发者迫切想要掌握的技能。
栈溢出问题在程序开发中十分常见,然而,编程人员一直都没有很好的解决该问题的方法,在arm架构编程这个当下最为热门的领域更是如此。
发明内容
为克服相关技术中存在的问题,本公开实施例提供栈溢出位置的检测方法及装置,用以实现快捷简便地检测栈溢出位置。
根据本公开实施例的第一方面,提供一种栈溢出位置的检测方法,包括:
在执行待测函数之前,确定程序中随机初始化数字的初始值,其中,所述随机初始化数字处于所述程序的数组缓冲区的最后一个元素的前一个字节对齐地址处,所述待测函数属于所述程序;
执行所述待测函数,并在执行所述待测函数之后,获取所述随机初始化数字的当前值;
判断所述当前值与所述初始值是否相同;
当所述当前值与所述初始值相同时,确定所述待测函数未发生栈溢出;当所述当前值与所述初始值不相同时,确定所述待测函数发生栈溢出。
在一个实施例中,所述确定程序中随机初始化数字的初始值之前,所述方法还包括:将所述程序中的当前层代码中的任一函数作为所述待测函数;
所述确定所述待测函数未发生栈溢出之后,所述方法还包括:当当前层代码中的每一个函数均未发生栈溢出时,将下一层代码中的任一函数作为所述待测函数,并利用所述方法对该下一层代码中的待测函数进行栈溢出位置的检测。
在一个实施例中,所述任一函数包括具有局部变量和/或全局变量的函数。
在一个实施例中,所述确定程序中随机初始化数字的初始值之前,所述方法还包括:当发生栈溢出的函数中包括子函数时,将该发生栈溢出的函数中的任一子函数作为所述待测函数。
在一个实施例中,所述任一子函数包括具有局部变量和/或全局变量的子函数。
根据本公开实施例的第二方面,提供一种栈溢出位置的检测装置,包括:
第一确定模块,用于在执行待测函数之前,确定程序中随机初始化数字的初始值,其中,所述随机初始化数字处于所述程序的数组缓冲区的最后一个元素的前一个字节对齐地址处,所述待测函数属于所述程序;
函数执行模块,用于执行所述待测函数,并在执行所述待测函数之后,获取所述随机初始化数字的当前值;
判断模块,用于判断所述当前值与所述初始值是否相同;
第二确定模块,用于当所述当前值与所述初始值相同时,确定所述待测函数未发生栈溢出;当所述当前值与所述初始值不相同时,确定所述待测函数发生栈溢出。
在一个实施例中,所述装置还包括:
第一选择模块,用于在所述第一确定模块确定程序中随机初始化数字的初始值之前,将所述程序中的当前层代码中的任一函数作为所述待测函数;
第二选择模块,用于在所述第二确定模块确定所述待测函数未发生栈溢出之后,当当前层代码中的每一个函数均未发生栈溢出时,将下一层代码中的任一函数作为所述待测函数,并利用所述方法对该下一层代码中的待测函数进行栈溢出位置的检测。
在一个实施例中,所述任一函数包括具有局部变量和/或全局变量的函数。
在一个实施例中,所述装置还包括:
第三选择模块,用于在所述第一确定模块确定程序中随机初始化数字的初始值之前,当发生栈溢出的函数中包括子函数时,将该发生栈溢出的函数中的任一子函数作为所述待测函数。
在一个实施例中,所述任一子函数包括具有局部变量和/或全局变量的子函数。
根据本公开实施例的第三方面,提供一种栈溢出位置的检测装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在执行待测函数之前,确定程序中随机初始化数字的初始值,其中,所述随机初始化数字处于所述程序的数组缓冲区的最后一个元素的前一个字节对齐地址处,所述待测函数属于所述程序;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于小米科技有限责任公司,未经小米科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510080254.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据拟合的方法及装置
- 下一篇:一种用于虚拟机上的混合监控度量方法及系统