首页 / 在受限应用执行环境中的应用执行

在受限应用执行环境中的应用执行有效专利 发明

技术领域

[0001] 本申请涉及在受限应用执行环境中的应用执行。

相关背景技术

[0002] 目前,存在前所未有的对安全操作系统的更大需求。一种较新的计算机操作系统通过对应用程序如何执行强加以更大的限制而提供了更大的安全性。例如,操作系统可不允许被编程为在操作系统的旧有版本上使用的应用程序访问特定的操作系统提供的应用编程接口(API)。由此,当在操作系统的较新的版本上被执行时,传统应用(即,被编程为在操作系统的旧有版本上使用的应用程序)会停止工作,或会不正常工作。
[0003] 为了使传统应用程序能与强加更繁重的安全限制的较新的操作系统一起工作,可能需要修改应用程序。然而,对传统应用程序的修改不会是一直可行的,因为源代码可能无法获得,应用程序的原开发商可能无法获得,金融资源可能无法负担修改的经费,或者底层技术可能太难以被理解。对期望在较新的操作系统上执行传统应用的个人或组织而言这也证明是令人挫败的。
[0004] 此处所做出的本公开正是对于这些和其他考虑事项而提出的。

具体实施方式

[0017] 以下的详细描述针对用于在受限应用执行环境中执行应用的技术。如以上所简要讨论的,由应用做出的API调用在运行时中被截取。随后做出每个被截取的API调用是否被受限应用执行环境所允许的确定。由受限应用执行环境所阻挡的每个API调用被修改,使得该API调用是可被允许的,诸如例如,修改该API调用以在影子资源上执行。也可在运行时中执行修复代码,以对API调用进行重新格式化,使得其被允许在受限应用执行环境中执行。关于这些和其他特征的附加细节将在以下提供。
[0018] 尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
[0019] 在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中作为说明示出了各具体实施例或示例。现在参考附图,其中全部若干附图中相同的标号表示相同的元素,将描述用于在受限应用执行环境中执行应用的计算系统和方法的诸个方面。
[0020] 图1是示出用于此处揭示的各个实施例的一个说明性操作环境的软件和网络体系结构图。特别是,在图1中示出的说明性操作环境包括受限应用执行环境100。如以上所简要讨论的,受限应用执行环境100是对应用程序的执行强加安全限制的用于执行应用程序的环境。例如,在图1所示的受限应用执行环境100中,操作系统102暴露出API 106。当应用104调用API 106时,操作系统102咨询安全监视器110以确定该对API 106的调用是否是被允许的。
[0021] 响应于从操作系统102接收到请求,安全监视器110可执行多种处理来确定该由应用104对API 106的调用是否是被允许的。例如,应用104可做出对API106的调用以访问已经被操作系统102的较新版本所拒绝(deprecate)的安全资源112。安全监视器110可将该调用识别为不被允许的,并使得操作系统102拒绝应用104对API 106的访问。应用104可包括回调(callback)API 108,通过该回调API 108,操作系统102可将该情况发送给应用104。
[0022] 如果安全监视器110确定该对API 106的调用是可允许的,安全监视器110和操作系统102将允许该对API 106的调用被执行。例如,在以上所述的示例中,当API 106是用于访问安全资源112时,安全监视器110将允许应用104访问安全资源112。应该理解到,安全资源112可以是文件、命名对象或事件、用户界面消息泵、内核对象、注册表、网路设备、或以安全方式被管理的其他类型的计算机资源。
[0023] 也应该理解到,安全监视器110可因与上述不同的理由而拒绝对API 106的访问。例如,安全监视器110可确定应用104还没有按照适当方式被数字签名、使用对隐藏API或未授权API的调用、还没有使用授权的开发环境来编程、或其他理由。将在下文中详细描述的,在此提供的诸个实施例提供了用于允许应用104以安全方式在如图1所示的受限应用执行环境100中被执行的功能。
[0024] 可以进一步认识到,图1所示的受限应用执行环境100可由标准桌面计算机或膝上型计算机、服务器计算机、平板计算设备、无线电话、或事实上任何其他类型的计算设备来提供。也可认识到,图1所示的受限应用执行环境100仅仅是示例性的,并且在此提供的诸个实施例可使用其他类型的对应用程序104的执行做出限制的环境。
[0025] 图2是示出被用于此处公开的一个实施例以识别在受限应用执行环境100中不被允许的API调用的操作的学习模式的诸个方面的软件体系结构图。如图2所示,操作系统102暴露用于由应用程序所使用的API 106。同样如以上参考图1所讨论的,安全监视器
110结合操作系统102一起使用,安全监视器110仲裁对安全资源112的访问。如将在下文中详细描述的,在图2中示出了操作的学习模式,用于识别被操作系统102和安全监视器
110所阻挡的由应用104做出的API调用202。如将在下文所讨论的,一旦已经识别了由应用104做出的API调用,就可利用诸个机制来修改或重新配置这些API调用使得它们可在运行时中被允许。
[0026] 在图2所示的操作的学习模式中,应用程序104被执行。引用监视器204截取由应用104做出的API调用202。引用监视器204被配置为截取API调用202,并且响应于此,确定API调用202是否被允许在受限应用执行环境100中执行。
[0027] 根据一个实施方式,引用监视器204通过咨询安全规则数据库206来确定API调用202是否被允许执行。在一个实施例中,安全规则数据库206包括指示API调用是否被允许在受限应用执行环境100中执行的数据。例如,安全规则数据库206可包括受限应用执行环境100中的安全资源112的列表。如果引用监视器204确定应用104已经做出了对安全资源112的API调用202,则API调用202将被视为是不可被受限应用执行环境100所允许的。
[0028] 如果引用监视器204识别将被受限应用执行环境100所阻挡的API调用202,引用监视器204则将关于该API调用202的数据发送给报告引擎208。响应于接收到来自引用监视器204的数据,报告引擎208被配置为确定API调用202是否是可修复的。也就是说,在一个实施例中报告引擎208被配置为确定API调用202是否可被修改为在受限应用执行环境100中执行。
[0029] 如果报告引擎208确定API调用202是不可修复的,则报告引擎208将向应用104的开发商或作者提供指示。以此方式,应用104的作者可采取措施来修改应用104,使得API调用202是在受限应用执行环境100中可允许的。
[0030] 如果报告引擎208确定API调用202是可修复的,则报告引擎208将识别API调用202的数据存储在运行时修复数据库210中。报告引擎208也可存储关于API调用202的附加状态信息,诸如:识别API的调用方的数据、调用堆栈、指示API如何被调用的数据、调用参数、以及其他数据。如将在下文中详细描述的,这些信息可被用在应用104的运行时中,以使得API调用202能被执行。
[0031] 根据一个实施方式,报告引擎208也包括报告UI 212。报告UI 212提供用于允许应用104的开发商访问运行时修复数据库210的内容的功能。报告UI 212也可向应用104的开发商提供UI,用于指示API调用202是不可修复的。该UI可提供关于API调用202的细节,诸如以上描述的状态信息。报告UI 212也可提供其他类型的用户接口,以向应用104的作者提供其他类型的信息。
[0032] 图3是根据此处提供的一个实施例,示出图2所示的操作的学习模式的操作的诸个方面的流程图。应该了解,这里参考图3和其他图形所描述的逻辑操作是(1)作为计算机实现的动作或在计算系统上运行的程序模块的序列和/或(2)计算系统内的互连机器逻辑电路或电路模块来实现的。取决于计算系统的性能及其他要求,可以选择各种的实现。因此,此处所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑,及其任何组合来实现。还应该明白,可以执行比附图中示出并在此处描述的操作更多或更少的操作。这些操作还可以按与此处所描述的操作不同的次序来执行。
[0033] 例程300在操作302开始,其中引用监视器204截取API调用202。响应于此,引用监视器204咨询安全规则数据库206以确定被截取的调用是否是可被允许的调用。如果API调用202是可允许的,例程300进行到操作302,如上所述在此可由引用监视器204截取另一个API调用202。如果API调用202是不可允许的,则例程300从操作306行进至操作308。
[0034] 在操作308,引用监视器204将关于API调用202的数据发送给报告引擎208。如以上描述的,报告引擎208将描述API调用202的数据存储在运行时修复数据库210中。在操作310中,报告UI 212被执行,以使得应用104的作者能访问运行时修复数据库210的内容。如上所述,例程300从操作310行进至操作302。
[0035] 应该理解到,在图2和3中所示的并且在以上描述的操作的学习模式使用了安全规则数据库206以确定由应用104做出的API调用在受限应用执行环境100中是否是可允许的。然而,应该理解到,可对应用104执行其他类型的静态分析,以确定由应用104做出的API调用在环境100中是否是可允许的。
[0036] 图4是根据此处提供的一个实施例,示出用于在受限应用执行环境中执行应用的此处所述的机制的诸个方面的软件体系结构图。特别是,图4示出了应用104的运行时。在运行时中,应用104可做出API调用202。如在学习模式中那样,引用监视器204截取API调用202。然而,在运行时中,引用监视器204咨询运行时修复数据库210以确定API调用202是否被受限应用执行环境100所允许。
[0037] 如上所述的,运行时修复数据库210包含有在一个实施例中识别可修复的那些API调用202的数据。如果API调用没有在运行时修复数据库210中被识别,则引用监视器204可推断该API调用202不经过修改就是可允许的,并允许API调用202继续下去。如果引用监视器204确定API调用202被受限应用执行环境100所阻挡,则引用监视器204在一个实施例中被配置为修改API调用202使得API调用202可在受限应用执行环境中被执行。
[0038] 在一个实施例中,引用监视器204虚拟化API调用202,以允许API调用202在环境100中被执行。例如,当API调用202是访问安全资源112的请求时,引用监视器204可创建影子资源402。影子资源402是一在环境100中对API调用202是可访问的安全资源112的版本。一旦已经创建了影子资源402,引用监视器204可修改API调用202使其可在影子资源402上执行。在该方式中,API调用202(诸如对API 404的API调用)可被修改以在受限应用执行环境100中执行。
[0039] 根据另一个实施方式,修复代码406可被执行以对API调用202进行重新格式化,或进行其他功能,使得API调用202被允许在受限应用执行环境100中执行。例如,API调用202可以是对要求使用安全网络连接的API 404的调用。如果调用202被格式化为使用非安全网络连接,则修复代码406可对调用202进行重新格式化使得其利用安全网络连接。修复代码406可随后使对API 404的重新格式化的API调用在环境100中被执行。应该理解到,引用监视器204可执行其他类型的功能,这些功能用于修改、重新格式化、或以其他方式改变API调用202,使得API调用在受限应用执行环境100中是可允许的。
[0040] 图5是根据此处提供的一个实施例,示出用于在受限应用执行环境100中执行应用的此处所述的一个示例性过程的诸个方面的流程图。特别是,图5示出例程500,例示了在图4所示的以及在上文中描述的操作的运行时模式中所执行的诸个操作。例程500在操作502开始,其中引用监视器204截取API调用202。响应于此,引用监视器204咨询运行时修复数据库210以确定是否在其中识别了API调用202。
[0041] 在操作506,引用监视器204确定在运行时修复数据库210中是否识别了API调用202。如果没有,则例程500从操作506行进到操作508,在操作508中引用监视器204允许API调用202正常地继续下去。例如,如果API调用202是对由操作系统102所暴露的API
404的调用,则引用监视器204可允许对API404的API调用202被执行。
[0042] 如果,在操作506,引用监视器204确定在运行时修复数据库210中识别了调用202,则例程500从操作506行进到操作510或到操作516。操作510-514是用于对由API调用202所识别的安全资源112进行虚拟化。操作516-518是用于执行修复代码406,所述修复代码用于修改API调用202使得其是可允许的。每一个这些操作都会在以下详细描述。应该理解到,用于对安全资源112进行虚拟化的操作以及用于执行修复代码406的操作是可替换执行的。在另一个实施例中,用于对安全资源112进行虚拟化的操作和用于执行修复代码406的操作可以互相结合执行。同样如以上所讨论的,可执行其他类型的操作以允许API调用202被修改使得其可在环境100中执行。
[0043] 为了对安全资源112进行虚拟化,在操作510创建影子资源402。如以上所简要讨论的,影子资源402是一在环境100中对API调用202是可访问的安全资源112的副本。一旦在操作510已经创建了影子资源402,例程500就行进到512,在512中引用监视器204使得API调用202被重定向到影子资源402。在操作514中,API调用202随后在影子资源
402上被执行。例程500从操作514行进至操作502,如以上所述的,在操作502中可截取其他API调用,并按照上述的方式进行处理。
[0044] 为了执行修复代码406,例程500从操作506行进至操作516,在操作516中,引用监视器204使得修复代码406被执行。如以上所讨论的,修复代码406对API调用202重新格式化,使得其被允许在环境100中执行。一旦API调用202已经被重新格式化,例程500就行进至操作518,在操作518中修复代码406使得重新格式化后的API调用202在安全资源112上执行。例程500从操作518行进至操作502,如以上所述的,在操作502中截取其他API调用,并按照上述的方式进行处理。
[0045] 应该理解到,根据其他实现方式,在此描述的技术的诸个方面可作为服务来提供。例如,在一个实现方式中,供应商可提供运行时修复数据库210和安全规则数据库206。供应商也可处理以如上描述的学习模式执行应用的请求。响应于此,供应商可提供为应用所定制的安全规则数据库206。以此方式,该服务的客户可无须执行学习模式操作。
[0046] 图6是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。图6示出的计算机体系结构说明了传统台式计算机、膝上计算机,或服务器计算机,并可被用来执行此处描述的各种软件组件。
[0047] 图6所示的计算机体系结构包括中央处理单元602(“CPU”)、包括随机存取存储器614(“RAM”)和只读存储器(“ROM”)616的系统存储器608、以及将存储器耦合至CPU602的系统总线604。包含诸如在启动时有助于在计算机600内的元件之间传输信息的基本例程的基本输入/输出系统(“BIOS”)被存储在ROM 616中。计算机600还包括用于存储操作系统618、应用程序和其他程序模块的大容量存储设备610,这将在以下更为详细地描述。
[0048] 大容量存储设备610通过连接至总线604的大容量存储控制器(未示出)连接到CPU 602。大容量存储设备610及其相关联的计算机可读存储介质为计算机600提供非易失性的存储。虽然对此处包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器等大容量存储设备,但本领域的技术人员应当理解,计算机可读介质可以是可由计算机600访问的任何可用计算机存储介质。
[0049] 作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括,但并不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光或其他光学存储,磁带盒、磁带、磁盘存储器或其他磁存储设备,或可以用来存储所需信息并可由计算机600访问的任何其他非瞬态介质。
[0050] 可以理解,此处的计算机可读介质也包括通信介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来具体化计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指其一个或多个特征以在信号中对信息进行编码的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。计算机可读存储介质不包括通信介质。
[0051] 根据各实施例,计算机600可以使用通过诸如网络620之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机600可通过连接至总线604的网络接口单元606来连接到网络620。应当理解,网络接口单元606还可以被用来连接到其他类型的网络和远程计算机系统。计算机600还可包括用于接收和处理来自多个其他设备的输入的输入/输出控制器612,这些设备包括键盘、鼠标或者电子指示笔(未在图6中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其他类型的输出设备(也未在图6中示出)的输出。
[0052] 如前简述的那样,多个程序模块和数据文件可以存储在计算机600的大容量存储设备610和RAM 614内,包括适于控制联网的台式计算机、膝上型计算机或服务器计算机的操作的操作系统618。大容量存储设备610和RAM 614还可存储一个或多个程序模块。具体而言,大容量存储设备610和RAM 614可存储引用监视器204、安全监视器110、报告引擎208和/或上述的其他软件组件。大容量存储设备610和RAM 614也可存储其他程序模块和数据,诸如安全规则数据库206和运行时修复数据库210。
[0053] 一般而言,在被加载到CPU 602中并被执行时,软件应用或模块可将CPU602和整个计算机600从通用计算系统变换成被定制成执行此处所呈现功能的专用计算系统。CPU602可以用任意数量的晶体管或其他分立的电路元件(它们可以分别地或共同地呈现任意数量的状态)构建。更具体地说,CPU 602可以响应软件或模块内包含的可执行的指令,作为一个或多个有限状态机来操作。这些计算机可执行的指令可以通过指定CPU 602如何在多个状态之间转换来转换CPU 602,从而在物理上转换构成CPU 602的晶体管或其他分立的硬件元件。
[0054] 通过将软件或模块编码到大容量存储设备上,还可变换大容量存储设备或相关联的计算机可读存储介质的物理结构。在本说明书的不同实现中,物理结构的具体变换可取决于各种因素。这些因素的示例包括但不限于:用来实现计算机可读存储介质的技术、计算机可读存储介质是被表征为主存储还是次级存储等。例如,如果计算机可读存储介质是作为基于半导体的存储器实现的,则当软件被编码到其中时,软件或模块可以转换半导体存储器的物理状态。例如,软件可以转换构成半导体存储器的晶体管、电容器或其他分立的电路元件的状态。
[0055] 作为另一个示例,计算机可读存储介质可以使用磁性或光学技术来实现。在这样的实现方式中,当软件被编码到其中时,软件或模块可以转换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内的特定位置的磁性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他转换也是可以的,前面提供的示例只是为了便于此讨论。
[0056] 基于上述描述,应该理解到,在此已经提供了用于在受限应用执行环境中执行应用的诸个技术。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
[0057] 上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。

当前第1页 第1页 第2页 第3页
相关技术
受限应用相关技术
应用执行相关技术
K·H·雷厄森发明人的其他相关专利技术