[发明专利]一种程序运行时处理器指令校验方法在审
申请号: | 201410835359.0 | 申请日: | 2015-08-04 |
公开(公告)号: | CN104504329A | 公开(公告)日: | 2015-07-29 |
发明(设计)人: | 吕雅帅;赵忠文;吴玲达 | 申请(专利权)人: | 中国人民解放军装备学院 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F21/56 |
代理公司: | 中国人民解放军防化研究院专利服务中心 11046 | 代理人: | 刘永盛 |
地址: | 101416 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种程序运行时处理器指令校验方法,该方法包括以下内容:在程序运行之前,计算出程序所有代码段中每条正确指令的地址,然后将正确指令的地址转换成地址校验数据,最后在程序运行过程中,当处理器计算出一条分支转移指令的分支目标地址,未提交结果时,对计算出的分支目标地址进行校验,本发明可用于阻止利用程序非正常指令序列构造出的恶意代码在处理器上执行。 | ||
搜索关键词: | 一种 程序 运行 处理器 指令 校验 方法 | ||
【主权项】:
一种程序运行时处理器指令校验方法,其特征是该校验方法步骤如下:(1)在程序运行之前,计算出程序所有代码段中每条正确指令的地址,其方法是:对于每个代码段,通过代码段信息获取该代码段起始处第一条指令的地址,然后从第一条指令起对该代码段进行反汇编,并通过反汇编依次获得该代码段中所有指令的长度,此后每条指令的地址即为前一条指令的地址加上前一条指令的长度;(2)将正确指令的地址转换成地址校验数据,其方法是:将地址上连续的代码段合并为一个代码段进行处理,设合并后代码段的起始加载地址是a0,结束地址为a1,对于a0至a1范围内的每一个地址,当该地址是一条正确指令的起始地址,则用一位“1”来表示,否则用一位“0”来表示,或用一位“0”表示一条正确指令的起始地址,一位“1”表示否,在程序运行过程中,地址校验数掘放在内存中,供处理器校验指令时进行查询,将所有合并后代码段的起始加载地址、代码段的大小和地址校验数据的地址记录到一个表中,供程序运行时查询使用;(3)在程序运行过程中,当处理器计算出一条分支转移指令的分支目标地址,未提交结果时,对计算出的分支目标地址进行校验,设待校验的分支目标地址为at,其校验方法是:1)通过一个分支目标校验缓存对该地址at进行校验,该分支目标缓存中存放了刚成功执行过的分支指令的分支目标地址,当待校验的分支地址at与分支目标缓存中的一个地址一致,则校验成功,处理器则继续正常执行,否则需执行2),2)首先找到地址at所对应的代码段,即要知道地址at是在哪个代码段的地址范围内,当没有找到对应的代码段,则地址at为非法地址,此时引发处理器异常,终止校验过程;当找到地址at对应的代码段后,设该代码段的第一个指令的起始地址为a0,则根据地址at相对于a0的偏移量找出相应的地址校验数掘,其方法是:设该代码段的地址校验数据存放于地址ac处,取出地址
处的一个字节,其中运算
表示不超过n的最大整数,n为0~264之间的实数,该字节的第(at‑a0)%8+1位即为地址at的校验数据,其中%表示取模运算;当校验数据表明地址at为一条正确指令的起始地址,则校验成功,处理器继续正常执行,并用地址at更新分支目标校验缓存,否则校验失败,引发处理器异常。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军装备学院,未经中国人民解放军装备学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410835359.0/,转载请声明来源钻瓜专利网。
- 上一篇:一种读卡器管理系统及其管理方法
- 下一篇:一种测试方法及终端