[发明专利]一种程序指令的执行方法及装置有效
申请号: | 202110728572.1 | 申请日: | 2021-06-29 |
公开(公告)号: | CN113312088B | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 庹凌云;王文东;沈英哲;陈远建;吕彦辉 | 申请(专利权)人: | 北京熵核科技有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/455 |
代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 陈霁 |
地址: | 100192 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 指令 执行 方法 装置 | ||
本发明实施例提供了一种程序指令的执行方法和装置,该方法包括:在执行第一程序之前,针对其中的若干预定函数,记录其起始地址和结束地址,和其中所有地址跳转指令的目标地址;预定函数中包括第一函数和第二函数;在执行第一程序时,当在第一函数中执行第一地址跳转指令时,确定第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;若结果为否,则中止执行第一地址跳转指令;当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;若结果为否,则中止执行第一函数调用指令。
技术领域
本发明涉及微处理架构技术领域和虚拟机技术领域,尤其涉及一种程序指令的执行方法及装置。
背景技术
虚拟机(VM,Virtual Machine)是指一种字节码执行软件。例如,Java VM是一种与Java编程语言有关的虚拟机,由Java语言编写的Java代码经过编译工具转换成Java字节码(byte code)。Java字节码可在Java VM上运行。此外,基本上所有的脚本语言编写的程序都会由特定的VM来执行。但是,现有的大多数VM或者微处理器架构中,其指令执行并不完全安全,例如,在跳转指令执行时被攻击者修改指令访问地址,从而带来难以预计的安全问题。
因此,需要一种新的程序指令的执行方法。
发明内容
本发明的实施例提供一种程序指令的执行方法和装置,相较于传统的指令执行方法,该方法通过在程序加载/编译阶段,对于预定函数建立保存了预定函数起始、结束地址,以及其中所有地址跳转指令的目标地址的跳转表,从而在程序执行时,基于跳转表验证跳转指令的跳转范围是否合法,根据验证结果确定是否允许跳转指令执行。利用该方法可以防止程序执行过程中的非法跳转,提高指令执行的安全性。
本发明为解决上述技术问题采用的技术方案为,一方面提供一种程序指令的执行方法,包括:
在执行第一程序之前,
针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址;所述预定函数中包括第一函数和第二函数;
在执行第一程序时,
当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中;
若结果为否,则中止执行第一地址跳转指令;
当在第一函数中执行第一函数调用指令时,确定第一函数调用指令的目标地址,是否为已记录的第一函数调用指令访问的第二函数的起始地址;
若结果为否,则中止执行第一函数调用指令。
优选地,所述执行第一程序之前,为编译/加载第一程序时;
所述针对第一程序中的若干预定函数,记录各预定函数的起始地址和结束地址,以及各预定函数中的所有地址跳转指令的目标地址,包括:
针对第一程序中的若干预定函数建立各自对应的跳转表,在所述跳转表中记录其对应的函数的起始地址和结束地址,以及该函数中所有地址跳转指令的目标地址。
具体地,所述当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在已记录的第一函数的起始地址至结束地址之间、且处于已记录的第一函数的所有地址跳转指令的目标地址之中,包括:
当在第一函数中执行第一地址跳转指令时,确定所述第一地址跳转指令的目标地址,是否处在第一函数对应的跳转表中记录的,第一函数的起始地址至结束地址之间、以及所有地址跳转指令的目标地址之中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京熵核科技有限公司,未经北京熵核科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110728572.1/2.html,转载请声明来源钻瓜专利网。