应用控制流模型的制作方法

文档序号:9816357阅读:583来源:国知局
应用控制流模型的制作方法
【专利说明】应用控制流模型
【背景技术】
[0001]应用监视系统监视或者观察在计算系统处被托管的应用的执行。这样的应用监视 系统能够用于确定应用是否在运行和/或是否在以暗示应用正非正常运行的方式在运行。
[0002] -些应用监视系统分析应用的字节代码或机器代码表示,以识别那些应用的可监 视片段(section)。例如,应用监视系统能够解析应用的字节代码或机器代码表示,以识别 应用的可被装备(instrument)来允许应用的运行时监视而不引起应用故障的片段(例如, 以字节代码或机器代码编码的指令序列)。
【附图说明】
[0003] 图1是根据实现方式的应用监视处理的流程图。
[0004] 图2是根据实现方式的经由主操作系统内的管理程序被托管的应用的图示。
[0005] 图3是根据实现方式的用于应用监视的文件的图示。
[0006] 图4是根据实现方式的应用监视系统的示意性框图。
[0007] 图5是根据实现方式的托管应用监视系统的计算系统的示意性框图。
[0008] 图6是根据实现方式的用于应用监视的文件的生成的图示。
【具体实施方式】
[0009] 尽管一些应用监视系统分析应用的字节代码或机器代码表示以确定关于那些应 用的控制流信息并且识别那些应用的可监视片段,但是从字节代码和机器代码表示提取控 制流信息会是困难又无效率的工作。从机器代码表示提取控制流信息通常是是特别困难的 工作。作为特例,从二进制可执行文件提取控制流信息是复杂的,导致错误和资源利用的可 tbf生 1? 〇
[0010] 应用的源代码表示以编程语言描述或者定义应用。通常,源代码表示的编程语言 是人类可读的,并且包括与允许有效并且准确得到那些应用的控制流图的功能(例如,结构 以及诸如数据流和控制流之类的流)有关的信息。控制流图是应用在执行期间在该应用的 多个片段中的目标流的描述。
[0011]然而,应用开发者或分发者一般不需要将应用作为源代码表示来分发。这样做的 一般原因是保护与软件紧密相关的IP,并且防止与那些应用的内部工作有关的细节被竞争 者获知。更确切地说,应用开发者通常将应用作为包括应用的字节代码或机器代码表示的 可执行文件来分发,字节代码或机器代码表示源于或编译自应用的源代码表示。
[0012] 包括应用的字节代码表示或机器代码表示的文件(例如,在非暂时性处理器可读 介质处存储的字节序列)往往被称为可执行文件,因为这些文件能够在计算系统处被执行 以使计算系统(或其处理器)执行动作。另外,包括应用的机器代码表示的文件往往被称为 二进制可执行文件,因为应用的机器代码表示包括由处理器执行的被编码为二进制值(例 如,1或0)的序列的指令。应用往往作为一组相关的二进制可执行文件被分发(或传送),相 关的二进制可执行文件可包括诸如共享库或动态链接库之类的共享可执行文件。这样的文 件往往被称为模块(或二进制模块)或对象(或二进制对象)。
[0013] 应用的一些开发者将监视界面结合进应用中。这样的监视界面完全在应用的开发 者的决定下设置。然而,使用应用的机构可能期望根据那些机构的策略要求来监视这些应 用。往往,这些应用的开发者所提供的监视界面或功能中的任意一种不支持这种机构所期 望的监视。因此,由使用那些应用的机构向应用提供附加的监视功能会有益于那些机构。
[0014] 然而,这种附加监视功能应以不扰乱这种应用的操作功能的方式来提供。监视应 用的执行(或应用监视)以确定应用是否运行和/或正确运行(即,如其被设计运行的那样) 由于在应用被分发进的应用表示内缺少与应用的预期功能相关的确切信息而被复杂化。换 言之,应用监视被复杂化,这是因为由于应用被分发在其中的表示,确定应用的预期功能会 很难。根据所使用的实现技术(例如,,丨aval .Net?),可能易于分析被执行(或被解释)的 应用的表示,以尝试得到应用的足够详细和准确的控制流图,从而确定应用的预期功能。然 而,这样的分析对于应用一般是不可能的,除非能够获得与应用的内部结构和功能有关的 附加信息(例如,应用控制和/或数据流)。
[0015] 例如,应用可以以字节代码表示或机器代码表示来表示。通常,应用的字节代码表 示是在诸如虚拟机之类的解释器处执行以实现或执行应用的指令的集合。作为具体示例, 应用的字节代码表示可以从以面向.丨a\a$'运行时环境(例如,Java?虚拟机)、Micr〇s〇ft. Net?」运行时环境的编程语言书写的那些应用的源代码表示得到,或者使用LLVM(低级虚拟 机)位代码技术得到。应用的一些这样的字节代码表示包括与那些应用的结构和流有关的 用于从字节代码表示有效并且确切得到控制流图的足够信息。然而,这样的得到可能占用 大量资源、速度慢并且易出错。
[0016] 通常,诸如系统级应用之类的一些类别的应用并不利用这样的编程语言来编写, 因为它们一般依赖于通常在计算系统(例如,在计算系统处被托管的操作系统)内较低级、 更基础的组件处得不到的复杂的运行时支持服务(例如,垃圾收集)。另外,高性能软件通常 需要使用系统级软件来编写,以向机器级服务提供有效的访问。
[0017] 许多这样的应用作为那些应用的机器代码表示被分发。机器代码表示是由诸如中 央处理单元(CPU)之类的处理器或计算系统执行的指令集。通常,每条指令执行特定的任 务,并且隶属于特定的处理器或处理器架构。作为特定示例,机器代码表示能够包括隶属于 ARM⑨处理器架构、x86处理器架构或X86-64处理器架构的指令。通常,这样的机器代码表 示源自于或编译自系统编程语言,例如C或C++,并且不包括与那些应用的结构和流有关的 用于从机器代码表示有效或准确得到控制流图的足够信息。因此,从这样的表示得到的控 制流图一般是大量资源(例如,需要大量的计算资源)和逼近驱动分析的结果。不幸的是,这 意味着从这种分析得到的控制流图对于准确识别应用的可监视片段而言一般太不精确,以 致不能装备(例如,放置监视代码)或者监视应用。结果,基于这样的控制流图的应用监视不 能充分捕获预期信息和/或损坏应用的功能完整性使应用不大稳定和可靠以及在操作中更 容易出错的风险。
[0018] 本文所讨论的实现方式致力于分配与应用的预期功能有关的信息以及那些应用 的表示。例如,本文所讨论的一些实现方式描述了要将控制流模型包括在包括应用的表示 的可执行文件内的系统、方法以及装置。作为另一示例,本文所讨论的一些实现方式描述了 使用可执行文件一一其包括用应用的注解表示扩展的应用的表示一一来识别控制流模型 以识别该应用的可监视片段的系统、方法以及装置。因此,这样的实现方式能够通过允许应 用的开发者或分发者输出或者提供相关信息以实现应用监视而不公开应用的源代码表示 来实现准确且有效的应用监视。
[0019] 作为一个示例,图1是根据实现方式的应用监视处理的流程图。处理100可以在各 种环境内实现。作为具体示例,处理100能够在托管应用监视系统的计算系统处实现。作为 另一具体示例,处理1〇〇能够通过在处理器处被执行时使处理器执行处理1〇〇的框或步骤的 被存储在非暂时性处理器可读介质处的指令来实现。另外,本文对执行一些动作的诸如处 理100之类的处理的引用应被解释成意味着:计算系统、计算系统的处理器或其他组件(例 如执行或解释被存储在非暂时性处理器可读介质处的指令的处理器)、或者组件、被存储在 非暂时性处理器可读介质处的指令和/或计算系统的组合执行那些动作。
[0020] 此外,图1中所图示的处理100是示例应用监视处理。在其他实现方式中,其他应用 监视处理能够包括相比于图1中所图示的那些框或步骤附加的、不同的或重新布置的框或 步骤。这样的实现方式的一些示例关于图1进行讨论。
[0021] 在框110处,在包括应用的机器代码表示的文件内识别应用的控制流模型(或其表 示)。作为具体示例,处理1〇〇能够在应用的机器代码表示被加载进计算设备的存储器中之 前,在包括应用的机器代码表示的文件中识别
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1