-
公开(公告)号:CN118556228A
公开(公告)日:2024-08-27
申请号:CN202280088587.9
申请日:2022-11-15
Applicant: 微软技术许可有限责任公司
Inventor: P·坎特 , J·N·比亚莱克 , 范翔 , 朱泳康 , G·T·K·多斯·雷斯 , R·B·凯尔多普 , M·伊甘 , R·C·哈德利 , R·威廉姆斯 , K·D·约翰逊 , P·M·塞奎拉·德朱斯托·特谢拉 , Y·巴克
Abstract: 基于能力集动态地重写函数。计算机系统读取可执行映像文件的一部分。该部分包括对应于第一被调用方函数实现的第一存储器地址。第一存储器地址已由编译器工具链插入到该部分中。基于可执行映像文件中所包括的可扩展元数据,并基于特定于计算机系统的能力集,计算机系统确定对应于第二被调用方函数实现的第二存储器地址。在执行该部分之前,计算机系统修改该部分以用第二存储器地址取代第一存储器地址。
-
公开(公告)号:CN118103840A
公开(公告)日:2024-05-28
申请号:CN202280069925.4
申请日:2022-07-27
Applicant: 微软技术许可有限责任公司
Abstract: 经由提供程序服务表安全地重定向系统服务例程。在较低信任安全区中执行的操作系统内加载服务调用提供程序。服务调用提供程序包括指示要被重定向到服务调用提供程序的系统服务例程的元数据。基于该元数据,在较高信任安全区内构建提供程序服务表。服务表将系统服务例程重定向到服务调用提供程序。与提供程序服务表相关联的(多个)存储器页受硬件保护,并且向操作系统暴露只读视图。提供程序服务表与用户模式进程相关联。由操作系统从用户模式进程接收针对特定系统服务例程的服务调用,并且基于与用户模式进程相关联的提供程序服务表,将服务调用定向到服务调用提供程序。
-
公开(公告)号:CN115335806A
公开(公告)日:2022-11-11
申请号:CN202180024209.X
申请日:2021-01-28
Applicant: 微软技术许可有限责任公司
Abstract: 以模块粒度而不是线程或进程粒度实施影子堆栈违规。在基于调用外部模块的应用二进制的代码的线程的执行期间处理异常,该应用二进制被启用以用于影子堆栈强制。该异常是由于从线程的调用堆栈弹出的返回地址与从线程的影子堆栈弹出的返回地址之间的不匹配引起的。处理异常包括:确定异常是由外部模块中的指令的执行引起的,以及确定外部模块是否被启用以用于影子堆栈强制。至少基于这些确定,在外部模块被启用以用于影子堆栈强制时,线程的执行被终止,或者当外部模块未被启用以用于影子堆栈强制时,线程被允许继续执行。
-
公开(公告)号:CN105659211A
公开(公告)日:2016-06-08
申请号:CN201480049869.3
申请日:2014-09-12
Applicant: 微软技术许可有限责任公司
CPC classification number: G06F21/53 , G06F9/45533 , G06F9/45558 , G06F21/51
Abstract: 虚拟机管理器促进选择性代码完整性实施。虚拟机管理器(或其他更高特权的实体)能验证存储器页中代码的完整性,且仅当虚拟机管理器(或其他更高特权的实体)验证了该代码的代码完整性时,以内核模式运行的虚拟处理器才能在存储器页上执行该代码。然而,当虚拟处理器以用户模式运行时,虚拟机管理器不需要验证存储器页中代码的完整性。相反,运行在虚拟处理器上的操作系统可应用各种各样策略中的任何策略(如任选地执行对代码的各种各样的不同检查或验证中的任何检查或验证)来判断该代码是否能以用户模式来执行。
-
公开(公告)号:CN105659211B
公开(公告)日:2019-03-22
申请号:CN201480049869.3
申请日:2014-09-12
Applicant: 微软技术许可有限责任公司
Abstract: 虚拟机管理器促进选择性代码完整性实施。虚拟机管理器(或其他更高特权的实体)能验证存储器页中代码的完整性,且仅当虚拟机管理器(或其他更高特权的实体)验证了该代码的代码完整性时,以内核模式运行的虚拟处理器才能在存储器页上执行该代码。然而,当虚拟处理器以用户模式运行时,虚拟机管理器不需要验证存储器页中代码的完整性。相反,运行在虚拟处理器上的操作系统可应用各种各样策略中的任何策略(如任选地执行对代码的各种各样的不同检查或验证中的任何检查或验证)来判断该代码是否能以用户模式来执行。
-
公开(公告)号:CN114144764A
公开(公告)日:2022-03-04
申请号:CN202080037709.2
申请日:2020-04-10
Applicant: 微软技术许可有限责任公司
Abstract: 使用调用栈和影子栈来执行程序。调用栈包括具有各自的返回地址的帧。这些帧还可以存储变量和/或参数。影子栈存储调用栈中的返回地址的副本。调用栈和影子栈通过以下方式来维护:(i)每当调用函数时,向调用栈添加相应的栈帧,并向影子栈添加相应的返回地址,以及(ii)每当退出函数时,从调用栈移除相应的帧,并从影子栈移除相应的返回地址。通过访问影子栈中的返回地址,生成程序当前调用链的回溯跟踪。输出的回溯跟踪包括来自影子栈的返回地址和/或关于从影子栈的返回地址导出的被跟踪函数的信息。
-
公开(公告)号:CN105247494A
公开(公告)日:2016-01-13
申请号:CN201480025867.0
申请日:2014-05-05
Applicant: 微软技术许可有限责任公司
IPC: G06F12/1009 , G06F12/14
CPC classification number: G06F12/1458 , G06F12/1009 , G06F12/145
Abstract: 芯片上的系统(SoC)或其他集成系统可包括第一处理器和共享页表的至少一个附加处理器。该共享的页表可包括许可比特,这些许可比特包括支持该处理器的第一许可指示符和支持至少一个附加处理器中的至少一个的第二许可指示符。在一个实现中,该页表可包括至少一个附加比特以适应支持该至少一个附加处理器的编码。当处理器之一存取处理器时,执行一种方法,在该方法中,共享的页表被访问并且(诸)许可指示符的值被从页表中读出以确定用于执行某些动作的许可,这些动作包括执行页;对页的读/写;或与页有关的内核模式。
-
-
-
-
-
-