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

文档序号:9816357阅读:来源:国知局
。例如,特定模块能够使用 一组电子电路和/或光学电路来实现,或者被实现为存储在非暂时性处理器可读介质(例如 存储器)处并且在处理器处执行的指令。
[0049]如在图4中所图示的,应用监视系统400包括控制流模块410、监视器模块420、以及 密码模块430。控制流模块410是软件和硬件的组合,其在包括应用的机器代码表示的文件 内访问应用的控制流模型的表示。例如,控制流模块410能够执行上面关于图1讨论的功能, 例如,参考处理100的框110和120讨论的那些功能。此外,在一些实现方式中,控制流模块 410解释控制流模型以识别应用的机器代码表示的一组可监视片段。作为具体示例,控制流 模块410能够实现处理100的框130。
[0050] 监视器模块420是软件和硬件的组合,其基于应用的机器代码表示的可监视片段 来启动对应用的运行时监视。例如,监视器模块420能够如上面关于图1所讨论的那样选择 应用的可监视片段,以启动对应用的运行时监视。在一些实现方式中,监视器模块420能够 将应用的机器代码表示的一个或多个片段装备在计算系统的存储器内,以启动对应用的监 视。
[0051] 例如,监视器模块420能够将指令或代码添加到计算系统的存储器内或者改变计 算系统的存储器内的应用的机器代码表示的指令或代码,以装备应用的一个或多个可监视 片段。作为具体示例,监视器模块420能够将指令添加至应用的机器代码表示,以在应用内 实现一个或多个回调、心跳(heartbeat)或其他线索。即,所添加的指令能够在例如监视器 模块420的模块内引起应用调用程序,或者将数据或信号提供至例如监视器模块420的模 块,以指示在运行时应用的哪些可监视片段被执行。
[0052]在其他实现方式中,监视器模块420能够配置一个或多个处理、线程或模块,以在 应用的运行时(或执行)期间通过采样、读取或者观察在应用的机器代码表示中的指令在托 管该应用的计算系统的处理器或存储器处的执行效果,来观察该应用的一个或多个可监视 片段,从而启动对应用的监视。然后,应用监视系统420能够依赖于应用的机器代码表示的 这种装备或对应用的机器代码表示的执行效果的观察来对应用进行运行时监视。
[0053]密码模块430是软件和硬件的组合,其对控制流模型的经加密表示进行解密。即, 密码模块430能够访问密码密钥,以对被确定为要加密的控制流模型的表示进行解密。在一 些实现方式中,密码模块430(例如,经由通信网络)与一个或多个服务通信,以访问或请求 密码模块430使用的密码密钥,从而对控制流模型的经加密表示进行解密。
[0054]图5是根据实现方式的托管例如应用监视系统400的应用监视系统的计算系统的 示意性框图。在图5中图示的示例中,计算系统500包括处理器510和存储器530。计算系统 500可以是例如服务器、笔记本计算设备、平板设备或一些其他计算设备。在一些实现方式 中,托管应用监视系统的计算系统本身被称为应用监视系统。
[0055] 处理器510是执行或解释指令、代码或信号的软件和硬件的任意组合。例如,处理 器510可以是微处理器、专用集成电路(ASIC)、图形处理单元(GPU)(例如通用GPU(GPGPU))、 分布式处理器(例如处理器或计算系统的集群或网络),多核或多处理器处理器、虚拟或逻 辑处理器,或其一些组合。作为具体示例,在一些实现方式中,处理器510能够包括多个处理 器,例如一个或多个通用处理器和一个或更多个通用GPU。
[0056] 存储器530是存储指令、代码、数据或其他信息的一个或多个处理器可读介质。如 本文中所使用的,处理器可读介质是非暂时地存储指令、代码、数据或其他信息的任意介 质,并且能被处理器直接或间接访问。换言之,处理器可读介质是非暂时性介质,在该非暂 时性介质处,处理器能够访问指令、代码、数据或其他信息。例如,存储器530可以是易失性 随机存取存储器(RAM)、永久数据存储器(例如硬盘驱动或固态驱动)、压缩盘(CD)、数字视 频盘(DVD)、安全数字?+(SD卡)、多介质(MMC)卡、紧凑闪存?(CF)卡、或者其组合或其他存 储器的组合。换言之,存储器530能够表示多个处理器可读介质。在一些实现方式中,存储器 530(或者其一些部分)能够与处理器510集成、与处理器510分离、或者在计算系统500的外 部。
[0057]存储器530包括当在处理器510处执行时实现操作系统531和其他模块(例如应用 监视系统535的组件(或模块))的指令或代码。换言之,存储在存储器530处的指令或代码能 够被称为模块。存储器530还可以操作为存储附加的代码或指令,以实现图5中未图示的其 他模块和/或如文件537的其他数据集。作为具体示例,文件537可以是例如在存储器530的 非易失性部分处被实现的文件系统内的文件。
[0058]在一些实现方式中,计算系统500可以是虚拟化的网络设备。例如,计算系统500可 以作为在服务器计算设备处的虚拟机被托管。
[0059]应用监视系统535和/或文件537能够从各种存储器或处理器可读介质或经由通信 网络被访问或者被安装在计算系统500处。例如,计算系统500能够经由通信接口(未示出) 访问在远程处理器可读介质处的应用监视系统。作为具体示例,计算系统500可以是在引导 过程(或序列)期间访问操作系统531和应用监视系统535的组件的网络引导设备。另外,计 算系统500(或应用监视系统535)能够经由通信接口(未示出)访问包括应用的机器代码表 示和控制流模型表示的文件537。作为另一示例,计算系统500可以包括(图5中未图示)处理 器可读介质访问设备(例如,CD或DVD驱动、或者CF或SD卡阅读器),以访问存储应用监视系 统535和/或537的组件的处理器可读介质。
[0060] 图6是根据实现方式的用于应用监视的文件(例如可执行文件或二进制可执行文 件)的生成的图示。这种文件可以在应用被分发之前生成。例如,包括应用的机器代码表示 和控制流模型的文件能够由应用的开发者或分发者使用应用的源代码表示来生成。因此, 这种文件的生成能够独立于由应用的用户(例如,通过如本文中所讨论的应用监视系统)执 行的应用监视。
[0061] 此外,因为分发给用户的应用(例如,包括应用的机器代码表示和应用的控制流模 型的可执行文件)包括应用的控制流模型,所以这样的用户无需试图从例如应用的机器代 码表示得到控制流信息。更确切地说,应用的用户能够依赖于向应用提供的控制流模型,并 且能够从应用的源代码表示可靠且准确地得到。
[0062] 具体参考图6中所图示的示例,源代码表示611是以编程语言对应用的描述,并且 被编译器620访问以生成应用的机器代码表示631。换言之,编译器620编译并且在一些实现 方式中执行附加的操作(例如预处理和链接),以根据应用的源代码表示611生成应用的机 器代码表示631。
[0063]另外,控制流分析器模块640还访问源代码表示611。控制流分析器模块640是硬件 和软件的组合,其分析应用的源代码表示并且生成应用的控制流模型。例如,控制流分析器 模块640可以是包括编译器620的编译系统的组件,编译器620生成由源代码表示611定义的 应用的控制流图(或者其一个或多个部分)。换言之,控制流分析器模块640对由源代码表示 611定义的应用执行控制流分析,以生成该应用的控制流模型。
[0064]作为示例,控制流信息可以由应用来提取,应用以与现代编译器的初始阶段类似 的方式操作。编译器访问源代码,并且应用分层翻译来获得目标对象代码。此翻译过程最初 应用解析技术以生成中间形式,该中间形式采用编译器通常特有的公知为中间语言的结 构。然后,此中间语言形式被用于优化阶段,之后通常翻译成目标处理器特有的符号汇编格 式。这往往被称为汇编阶段。此符号汇编格式的代码之后被最终翻译成处理器特有的二进 制机器代码格式,以形成最终的对象代码。能够从中间语言代码表示或通过再分析符号汇 编代码格式从汇编阶段提取控制流信息作为二次输出。然后,所产生的控制流信息描述允 许功能代码和基本代
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1