[发明专利]内存改写的定位方法及装置有效
申请号: | 201911031504.9 | 申请日: | 2019-10-28 |
公开(公告)号: | CN110764914B | 公开(公告)日: | 2022-09-20 |
发明(设计)人: | 周超勇 | 申请(专利权)人: | 锐捷网络股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F21/79 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 350002 福建省福州市仓*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 改写 定位 方法 装置 | ||
本发明公开了一种内存改写的定位方法及装置,该方法包括:接收应用程序的第一线程发送的携带第一内存地址的内存访问请求;确定在所述应用程序的页表中以所述第一内存地址为起始地址的第一内存空间的访问权限是否是无权限,所述页表中已经被释放的部分被监控内存空间的访问权限是无权限;若确定在所述页表中所述第一内存空间的访问权限是无权限,则确定所述第一内存空间被改写;发出携带所述应用程序的执行位置和函数调用关系表的CPU异常通知。该方案可以实现自动定位内存改写,相对于现有技术可以节省人力资源,提升定位效率。
技术领域
本发明涉及通信技术领域,尤指一种内存改写的定位方法及装置。
背景技术
随着嵌入式系统复杂度的提升,应用程序规模的扩大,有时会出现内存改写的情况,这可能是由于代码逻辑错误等等原因导致的,例如,应用程序的线程可能会继续使用已释放的内存空间,该内存空间若被应用程序的其他线程申请,则会导致该内存空间中的数据被改写,从而引发内存改写。
内存改写并不会立刻引发异常,可能在过了很长时间之后才会出现异常,中央处理器(Central Processing Unit,CPU)发出异常通知,此时需要技术人员针对应用程序的代码进行逐一排查,来确定引发内存改写的代码,并对确定出的代码进行修改,来克服内存改写的问题。
上述方案中,在定位内存改写时,需要技术人员来完成,这样就会浪费大量人力资源,并且定位效率非常低。
发明内容
本发明实施例提供一种内存改写的定位方法及装置,用以解决现有技术中存在的浪费大量人力资源,并且定位效率非常低的问题。
根据本发明实施例,提供一种内存改写的定位方法,应用于设备的中央处理器CPU中,包括:
接收应用程序的第一线程发送的携带第一内存地址的内存访问请求;
确定在所述应用程序的页表中以所述第一内存地址为起始地址的第一内存空间的访问权限是否是无权限,所述页表中已经被释放的部分被监控内存空间的访问权限是无权限;
若确定在所述页表中所述第一内存空间的访问权限是无权限,则确定所述第一内存空间被改写;
发出携带所述应用程序的执行位置和函数调用关系表的CPU异常通知。
可选的,还包括:
接收所述应用程序的第二线程发送的携带申请内存大小的内存申请请求;
计算所述申请内存大小对应的实际内存大小;
确定所述页表中满足所述实际内存大小且访问权限是有权限的第二内存空间;
在所述第二内存空间的头部写入标识信息和所述实际内存大小;
获取所述第二内存空间的起始地址,得到第二内存地址;
向所述第二线程发送携带所述第二内存地址的内存申请响应。
具体的,计算所述申请内存大小对应的实际内存大小,具体包括:
将内存单元的大小减1,得到所述内存单元的掩码;
计算所述申请内存大小、预设头部大小与所述内存单元的掩码的和值;
将所述和值与所述内存单元的掩码进行逻辑与运算,得到所述申请内存大小对应的实际内存大小。
可选的,还包括:
接收所述应用程序的第三线程发送的携带第三内存地址的内存释放请求;
确定以所述第三内存地址为起始地址的第三内存空间是否是可定位类型;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于锐捷网络股份有限公司,未经锐捷网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911031504.9/2.html,转载请声明来源钻瓜专利网。