[发明专利]用于二进制文件转换系统的影子堆栈操纵的技术有效
申请号: | 201680030120.3 | 申请日: | 2016-05-24 |
公开(公告)号: | CN107710151B | 公开(公告)日: | 2021-09-07 |
发明(设计)人: | T·因杰;K·山田;P·卡普廖利;J·陆 | 申请(专利权)人: | 英特尔公司 |
主分类号: | G06F8/52 | 分类号: | G06F8/52;G06F9/448;G06F12/08 |
代理公司: | 永新专利商标代理有限公司 72002 | 代理人: | 刘瑜;王英 |
地址: | 美国加*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 二进制文件 转换 系统 影子 堆栈 操纵 技术 | ||
1.一种用于影子堆栈管理的计算设备,所述计算设备包括:
调用模块,其用于:
将本地返回地址推入到所述计算设备的本地堆栈;
响应于所述本地返回地址推入到所述本地堆栈,而将恒定偏移量加到所述计算设备的堆栈指针;
响应于所述恒定偏移量加到所述堆栈指针,而对已转换调用目标执行本地调用指令,其中,所述已转换调用目标与所述本地调用指令的本地调用目标相对应;以及
响应于所述本地调用指令的执行,而从所述堆栈指针中减去所述恒定偏移量;以及
处理器,其用于响应于所述本地调用指令的执行而将已转换返回地址推入到所述计算设备的影子堆栈;
其中,所述恒定偏移量表示所述本地堆栈与所述影子堆栈之间的距离。
2.根据权利要求1所述的计算设备,还包括存储器管理模块,其用于:
将所述影子堆栈的多个虚拟存储器页映射到第一物理存储器页。
3.根据权利要求1所述的计算设备,还包括:
二进制文件转换模块,其用于执行已转换二进制文件的已转换调用例程,其中,所述已转换调用例程与本地二进制文件的本地调用指令相对应,并且
其中,推入所述本地返回地址包括响应于所述已转换调用例程的执行而推入所述本地返回地址。
4.根据权利要求3所述的计算设备,其中,所述二进制文件转换模块还用于:
根据所述本地二进制文件来生成所述已转换二进制文件,其中,所述已转换二进制文件包括所述已转换调用例程;以及
执行所述已转换二进制文件;
其中,执行所述已转换调用例程包括响应于所述已转换二进制文件的执行而执行所述已转换调用例程。
5.根据权利要求1所述的计算设备,还包括二进制文件转换模块,其用于响应于所述恒定偏移量加到所述堆栈指针而检查所述堆栈指针是否超出与所述影子堆栈相关联的预先分配的虚拟地址范围。
6.根据权利要求1所述的计算设备,还包括:
返回模块,其用于:
响应于从所述堆栈指针中减去所述恒定偏移量,而从所述计算设备的所述本地堆栈弹出所述本地返回地址;
响应于所述本地返回地址从所述本地堆栈弹出,而将所述恒定偏移量加到所述堆栈指针;
响应于所述恒定偏移量加到所述堆栈指针而执行本地返回指令,所述恒定偏移量加到所述堆栈指针是响应于所述本地返回地址从所述本地堆栈弹出的;以及
响应于所述本地返回指令的执行,而从所述堆栈指针中减去所述恒定偏移量;
其中,所述处理器还用于响应于所述本地返回指令的执行而从所述影子堆栈弹出所述已转换返回地址。
7.根据权利要求6所述的计算设备,还包括:
存储器管理模块,其用于将所述影子堆栈的多个虚拟存储器页映射到第一物理存储器页;
其中,所述返回模块还用于响应于所述本地返回指令的执行而对所述已转换返回地址进行确认。
8.根据权利要求7所述的计算设备,其中:
从所述本地堆栈弹出所述本地返回地址包括:将所述本地返回地址弹出到所述计算设备的第一寄存器中;并且
对所述已转换返回地址进行确认包括:
确定与所述已转换返回地址相关联的临时本地返回地址;
确定所述临时本地返回地址是否与所述计算设备的所述第一寄存器相匹配;
响应于所述临时本地返回地址与所述第一寄存器不匹配的确定,而基于所述第一寄存器的内容来确定经校正的已转换返回地址;以及
响应于所述经校正的已转换返回地址的确定,而跳转到所述经校正的已转换返回地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680030120.3/1.html,转载请声明来源钻瓜专利网。