[发明专利]一种定位内存非法改写的方法、系统及存储介质有效
申请号: | 201910258066.3 | 申请日: | 2019-04-01 |
公开(公告)号: | CN110046097B | 公开(公告)日: | 2022-04-29 |
发明(设计)人: | 李小军;秦金昆 | 申请(专利权)人: | 深圳震有科技股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/30 |
代理公司: | 深圳市君胜知识产权代理事务所(普通合伙) 44268 | 代理人: | 王永文;刘文求 |
地址: | 518057 广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 定位 内存 非法 改写 方法 系统 存储 介质 | ||
本发明公开了一种定位内存非法改写的方法、系统及存储介质,所述方法包括:监测内存是否被访问;当监测到内存被访问时,触发中央处理器使能debug中断;修改程序计数器地址,所述中央处理器自动执行debug中断程序,并通过函数调用栈定位内存被改写的位置。本发明通过自编译的函数调用栈以及中央处理器提供的debug功能自动定位内存被非法改写的所在行数据,不仅可以实现复位系统,提高安全性,还无需增加人工成本,节约资源,方便用户。
技术领域
本发明涉及嵌入式板级支持技术领域,具体涉及一种定位内存非法改写的方法、系统及存储介质。
背景技术
在嵌入式系统中,程序通常由各种段(sector)组成,在编译的时候就已经将这些段分别分配了地址,而且每个段都是连续分布的。CPU从代码段中取指令并执行,如果代码段被改写了,会造成流程错误,甚至是系统死机的现象出现。
通常,为了对代码段进行保护,代码段是不会修改的,是禁止改写代码段的内存空间的。只有在debug(调试)版本在线调试或者打补丁时,才可能修改代码段指令。
目前,代码段写保护是通过设置代码段所在的内存页属性为只读来实现,每个页的大小为4KB,并且代码段必须先设置4KB对齐,在编译的时候就要设置代码段起始地址是4096的整数倍,同时结束地址所在的页也不能有其它不被写保护的段。因此,现有技术存在两个缺陷,第一是当需要修改编译脚本时,需要非常专业的工程师进行修改,不能普及;第二是造成一定内存资源的浪费,利用率不足且增加成本。
因此,现有技术还有待于改进和发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种定位内存非法改写的方法、系统及存储介质,旨在通过自编译的函数调用栈以及中央处理器提供的debug功能自动定位内存被非法改写的所在行数据,不仅可以实现复位系统,提高安全性,还无需增加人工成本,节约资源,方便用户。
本发明解决技术问题所采用的技术方案如下:
一种定位内存非法改写的方法,所述定位内存非法改写的方法包括以下步骤:
监测内存是否被访问;
当监测到内存被访问时,触发中央处理器使能debug中断;
修改程序计数器地址,所述中央处理器自动执行debug中断程序,并通过函数调用栈定位内存被改写的位置。
所述的定位内存非法改写的方法,其中,所述监测内存是否被访问之前包括:
预先编译用于触发debug中断时被调用的函数调用栈,并存储在内存中。
所述的定位内存非法改写的方法,其中,所述监测内存是否被访问之前还包括:
预先设置在所述中央处理器中的用于监控内存的机器状态寄存器和调试控制寄存器并进行初始化,同时也初始化所述程序计数器。
所述的定位内存非法改写的方法,其中,所述监测内存是否被访问具体包括:
启动中央处理器监控功能,将当前运行程序的代码段的起始地址写入至所述机器状态寄存器,将当前运行程序的代码段的结束地址写入至所述调试控制寄存器;
所述中央处理器监测当前内存是否被写访问。
所述的定位内存非法改写的方法,其中,所述当监测到内存被访问时,触发中央处理器使能debug中断具体包括:
当所述中央处理器监测到内存被写访问时,则触发所述中央处理器产生中断信号,并向debug中断程序发送所述中断信号;
所述机器状态寄存器接收到所述中断信号后更改状态标志位,同时所述调试控制寄存器接收到所述中断信号后更改复用标志位。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳震有科技股份有限公司,未经深圳震有科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910258066.3/2.html,转载请声明来源钻瓜专利网。