当前位置: 首页 > 专利查询>杨力祥专利>正文

一种非立即数跳转的保护方法及对应计算装置制造方法及图纸

技术编号:22883634 阅读:17 留言:0更新日期:2019-12-21 07:10
本发明专利技术公开了一种非立即数跳转的保护方法,涉及信息技术,特别是信息安全领域,可以采用将非立即数跳转指令改写为立即数跳转指令的方式,或通过在非立即数跳转指令执行前进行检查的方式,或增设一种非立即数跳转指令的方式来实现。应用本发明专利技术提供的方案,攻击状态下,攻击程序无法通过修改间接转移指令目标地址值的方式,改变程序的执行序。

A protection method of non immediate jump and its corresponding calculation device

【技术实现步骤摘要】
一种非立即数跳转的保护方法及对应计算装置
本申请涉及信息
,特别涉及一种非立即数跳转的保护装置和方法,以及一种函数指针的保护装置和方法。
技术介绍
现有技术中,计算机软件由指令和数据组成,所有的计算、操作都是执行指令来实现,一条指令只能执行一个极小的动作单元,如:加、减、乘、除,移动数据,中断……,这些动作太小。若要完成一个对人有意义的任务,就需要连续执行一系列指令,以下称为指令执行序列,简称执行序。显然一个确定的执行序能够实现一个确定的功能。包括操作系统在内的所有软件,都是由许许多多有着确定功能的执行序组成。基于现代的CPU架构和操作系统架构,以及对代码段使用只读保护等技术手段,已经杜绝了诸如用户态的攻击代码企图直接执行内核态代码、直接修改内核态代码、数据获得超越授权等操作。进一步的,由于硬件特权级以及门机制对于目标地址的严格保护,用户态的程序也无法直接从内核中选择对攻击有利的目标地址形成攻击者希望的执行序。从信息安全角度看,数据不是指令,本身不具有执行能力,无法直接形成执行序,所以不具有攻击力。但是,攻击者仍然能够采用间接的方式实现攻击。例如,可以利用超越范围的数组拷贝,数组下标操作导致的数组越界等方法用攻击者准备好的数据修改指向函数的指针,即钩子函数(hook),或者将钩子修改为原设计的几个可能的之中的某一个值,但该值不是当时合理的值,而是在当时条件下有利于攻击的一个值。对于信息安全领域来说,攻击者就能够从可能的分支中选择有利于攻击的分支。在此基础上,攻击者就可以修改授权信息、改变授权状态,从而获得超越授权的状态。进而可以进行诸如以下操作:1、超越授权读取用户数据(包括内存和外设的数据)。2、超越授权写入(包括篡改、删除)用户数据。3、超越授权执行系统调用。4、超越授权执行应用程序。
技术实现思路
为解决攻击者能够从可能分支中选择有利于攻击的分支,进而获得超越授权的状态的技术问题,本专利技术公开了非立即数跳转的保护方法。钩子函数是非立即数跳转的一种代表。在本专利技术的一种具体实现方式中,针对非立即数跳转在受到攻击的情况下,能够使得攻击者从可能的分支中选择有利于攻击的分支的问题,本专利技术公开了一种非立即数跳转的保护方法,其特征在于:将非立即数跳转指令改写为立即数跳转指令的方式,使跳转地址确定。所述立即数跳转指令的方式是指通过条件判断,选择函数进行调用的方式。在本专利技术的一种具体实现方式中,一种非立即数跳转的保护方法,其特征在于:通过在非立即数跳转指令执行前进行检查的方式,防止非立即数跳转指令访问非法地址。优选的,所述进行检查是通过在非立即数跳转指令执行前添加“对跳转目标地址进行判断”逻辑对应的指令,检查跳转的地址是否在指定的地址集合内;如果所述跳转的地址处于其可能跳转到的全部地址集合内,则允许执行非立即数跳转指令,否则,则进入异常处理流程。优选的,将所述非立即数跳转指令可能跳转到的地址集合中的每一个地址,对应的生成一个随机ID值,ID在整个整数范围内随机取值,且要确保每个ID值彼此不相同,构建一个ID值与跳转目标地址的对照表,并用ID值给指针变量赋值。优选的,ID的生成,在系统初始化的时候进行,确保每次开机运行,同一个函数对应的ID值都不同。所述“对跳转目标地址进行判断”的逻辑包括根据ID值,在“ID值与跳转目标对照表”中,找到匹配的跳转目标地址值,如果找不到跳转目标地址值,进入异常处理流程,如果找到匹配的跳转目标地址值,就返回该值作为跳转指令的跳转目标地址值。一种非立即数跳转的保护方法,其特征在于:将所述非立即数跳转指令可能跳转到的地址集合中的每一个地址,对应的生成一个随机ID值,ID在整个整数范围内随机取值,且要确保每个ID值彼此不相同,构建一个ID值与跳转目标地址的对照表,并用ID值给指针变量赋值。一种非立即数跳转的保护方法,其特征在于:增设一种非立即数跳转指令,CPU执行此指令时,自动识别目标地址是否为指定地址集合中的一项,如果是,则为合法操作,支持执行,如不是,报异常。优选的,所述非立即数跳转指令不再用跳转地址,而是用ID值来标识跳转目标,且所述ID值与跳转的目标地址建立一一对应关系,并记录于一个对照表内。一种计算装置,其特征在于:包括一种非立即数跳转指令,所述指令能够自动识别是否跳转到指定的地址集合内,并作出处理。一种编译器的改进方法,其特征在于:在编译源文件时,自动生成非立即数跳转指令前的目标地址判断逻辑对应的指令,以确保跳转的地址在指定的地址集合内。优选的,在语法分析过程中,编译器在识别到具有“将函数地址赋值给指针变量”以及“调用钩子函数”的语法现象时,在语法树中进行标识,这些标识的信息一直保持到目标代码生成阶段,根据这些信息,就可以识别出非立即数跳转指令的地址位置,以及可能跳转到的地址集合,并据此,在生成非立即数跳转指令前,自动添加对跳转地址进行检查的逻辑对应的指令。优选的,在语法分析过程中,编译器在识别到具有“将函数地址赋值给指针变量”以及“调用钩子函数”的语法现象时,在语法树中进行标识,这些标识的信息一直保持到目标代码生成阶段,在目标代码生成阶段,将统计出来的可能跳转到的地址集合中每一个地址,对应的生成一个对应的随机ID值,ID在整个整数范围内随机取值,要确保每个ID值彼此不相同,构建一个ID值与跳转目标地址的对照表,并用ID值给指针变量赋值,并据此,在生成非立即数跳转指令前,自动添加对跳转地址进行检查的逻辑对应的指令。通过上述技术方案,本专利技术能够具备以下技术效果:攻击状态下,攻击程序无法通过修改间接转移指令目标地址值的方式,改变程序的执行序,进而获得超越授权。具体实施方式下面将结合实施例,对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。针对现有技术的问题,本专利技术提出了一种非立即数跳转(包括函数指针)的保护方法。以下结合具体实施例进行详细说明。实施例1:通过把非立即数跳转指令改写为立即数跳转指令的方式,确定跳转的地址。一个具体的实施方式是:将源代码中所有钩子函数的调用,改写为“通过条件判断,选择函数进行调用”的形式。在现有编译、链接体系下,钩子函数的调用最终会生成非立即数跳转指令,经过这样的改动,最终会生成立即数跳转指令。实施例2:通过在非立即数跳转指令执行前添加“对跳转目标地址进行判断”逻辑对应的指令的方式,检查跳转的地址是否在指定的地址集合内,并作出相应处理。一种具体的实施方式:在源程序中,先人工统计出每一个非立即数的跳转可能对应的地址集合,以及进行非立即数跳转的指令本身所在的地址,之后在非立即数跳转指令前添加指令,实现判断逻辑,此逻辑本文档来自技高网
...

【技术保护点】
1.一种非立即数跳转的保护方法,其特征在于:将非立即数跳转指令改写为立即数跳转指令的方式,使跳转地址确定。/n

【技术特征摘要】
1.一种非立即数跳转的保护方法,其特征在于:将非立即数跳转指令改写为立即数跳转指令的方式,使跳转地址确定。


2.根据权利要求1所述的方法,其特征在于:所述立即数跳转指令的方式是指通过条件判断,选择函数进行调用的方式。


3.一种非立即数跳转的保护方法,其特征在于:通过在非立即数跳转指令执行前进行检查的方式,防止非立即数跳转指令访问非法地址。


4.根据权利要求3所述的方法,其特征在于:所述进行检查是通过在非立即数跳转指令执行前添加用于完成“对跳转目标地址进行判断”这一逻辑的指令,检查跳转的地址是否在指定的地址集合内。


5.根据权利要求4所述的方法,其特征在于:如果所述跳转的地址处于其可能跳转到的全部地址集合内,则允许执行非立即数跳转指令,否则,则进入异常处理流程。


6.根据权利要求3-5之一所述的方法,其特征在于:将所述非立即数跳转指令可能跳转到的地址集合中的每一个地址,对应的生成一个对应的随机ID值,ID在整个整数范围内随机取值,且要确保每个ID值彼此不相同,构建一个ID值与跳转目标地址的对照表,并用ID值给指针变量赋值。


7.根据权利要求6所述的方法,其特征在于:所述“对跳转目标地址进行判断”的逻辑包括根据ID值,在“ID值与跳转目标对照表”中,找到匹配的跳转目标地址值,如果找不到跳转目标地址值,进入异常处理流程,如果找到匹配的跳转目标地址值,就返回该值作为跳转指令的跳转目标地址值。


8.一种非立即数跳转的保护方法,其特征在于:将所述非立即数跳转指令可能跳转到的地址集合中的每一个地址,对应的生成一个随机ID值,ID在整个整数范围内随机取值,且要确保每个ID值彼此不相同,构建一个ID值与跳转目标地址的对照表,并用ID值给指针变量赋值。


9.一种...

【专利技术属性】
技术研发人员:杨力祥
申请(专利权)人:杨力祥
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1