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

文档序号:9816357阅读:来源:国知局
应用的控制流模型。应用的控制流模型是该 应用或其一部分的预期功能的描述。因为控制流模型明显包含有机器代码表示,所以应用 监视系统能够确定应用的预期功能而无需试图从机器代码表示得到这种信息。换言之,控 制流模型提供了应用的能够用于实现应用监视的适当详细地图,例如对应用的动态运行时 分析。
[0022] 此外,在一些实现方式中,控制流模型排除或者模糊化与应用的敏感片段的功能 有关的信息(例如,应用的某些片段,关于这些片段,应用的开发者或者分发者不期望提供 对功能或流程的描述)。例如,应用的一组基本框(例如,应用的机器代码表示的基本 框)一一通过这些基本框,应用流在执行期间汇聚于另一基本框一一能够通过单个节点或 比在那组基本框中的基本框的数目更少的节点来表示,以模糊化或者排除与应用的那些片 段(例如,基本框)的功能有关的信息。此外,在一些实现方式中,应用的控制流模型包括在 包括控制流模型和机器代码表示的可执行文件内对该应用的机器代码表示的片段的引用。
[0023] 控制流模型能够例如从应用的源代码表示得到,源代码表示未包括在包括应用的 控制流模型和机器代码表示的文件中。作为具体示例,应用的开发者或者分发者能够从应 用的源代码表示得到控制流模型,并且将控制流模型的表示包括在包括应用的机器代码表 示的文件中。因此,应用的开发者或者分发者能够提供与应用的功能有关的信息,而不提供 对应用的源代码表示的访问。此外,如上面所讨论的,控制流模型能够排除或者模糊化对应 用的敏感片段的功能的描述。因此,应用的开发者或者分发者能够排除或者模糊化对应用 的敏感片段的功能的描述。
[0024] 作为具体示例,控制流模型能够被表示为控制流图。控制流图是应用的潜在流(或 多个流)以图形符号的表示。换言之,控制流图描述了经过应用的表示(例如,机器代码表 示)的各片段的路径或在应用的表示的各片段间的关系。这些片段可以是应用的表示的基 本框(即,应用的不包括跳转、分支或目标(例如,跳转或分支目标)的那些片段)。基本框可 以被表示为控制流图的节点,并且控制流图的连接节点的边缘可以表示应用通过基本框执 行的潜在流(例如,应用的潜在执行路径)。在一些实现方式中,控制流图的每个节点能够引 用应用的机器代码表示的片段(例如,包括应用的机器代码表示的片段的字节偏移或指向 应用的机器代码表示的片段的指针),该片段在包括该应用的控制流图和机器代码表示的 可执行文件内与该节点相关联或由该节点表示。
[0025] 处理器100能够通过识别在包括应用的机器代码表示的文件内以预定或标准的字 节偏移指向控制流模型的指针,来识别在包括应用的机器代码表示的文件内的该应用的控 制流模型。作为另一示例,处理100能够通过识别包括应用的机器代码表示的文件的片段或 部分,来识别在包括应用的机器代码表示的文件内的该应用的控制流模型。作为具体示例, 文件的这种片段或部分可以是可执行与可链接格式(ELF)可执行文件(或者针对微软窗口 环境的PE/C0FF格式)的分段或片段。可执行文件(给定格式的可执行文件的)的这种分段或 片段相对于当前定义的分段和片段可以是附加的或定制的分段或片段。
[0026] 例如,图3是根据实现方式的用于应用监视的文件的图示。文件300可以是应用的 可执行文件,诸如例如应用的二进制可执行文件。如图3中所图示的,文件300包括控制流模 型310的表示和机器代码表示320。控制流模型310的表示描述了应用的由机器代码表示320 定义的预期功能或编程功能(例如控制流)。控制流模型310和机器代码表示320能够被定位 在例如文件300的预定片段或分段处。此外,在图3中所图示的示例中,控制流模型310和机 器代码表示320在文件300内彼此分开。换言之,控制流模型310并未包括在或隐藏于机器代 码表示320内。
[0027] 如图3中所图示,控制流模型310的表示是具有节点(节点中的仅仅一部分在本文 中关于图3被明确示出和讨论)的控制流图,这些节点表示机器代码表示320的各片段(例 如,基本框)。即,控制流图的边缘描述了应用的流,该应用的流由机器代码表示320的片段 中的机器代码表示320定义,并且由节点312、312、313、319和未被明确图示的控制流图的其 他节点来表示。更具体地,应用的通过由节点311引用或指向节点311的指令所定义的片段, 以到达应用的通过由节点312引用或指向节点312的指令所定义的片段或者应用的通过由 节点313引用或指向节点313的指令所定义的片段的条件跳转或分支来结束。
[0028] 类似地,应用的通过由节点312引用或指向节点312的指令所定义的片段,以到达 机器代码表示320的其他三个片段之一的条件跳转或分支来结束,所述三个片段之一是应 用的通过由节点319引用或指向节点319的指令所定义的片段。另外,应用的通过由节点313 引用或指向节点313的指令所定义的片段,以到达机器代码表示320的其他三个片段之一的 条件跳转或分支来结束,所述三个片段之一是应用的通过由节点319引用或指向节点319的 指令所定义的片段。
[0029] 再参考图1,在一些实现方式中,如图1中所图示,在包括应用的机器代码表示的文 件内,应用的控制流模型的表示能够被加密。例如,控制流模型的表示能够被加密以限制对 控制流模型的访问。即,例如,应用的开发者或分发者可通过向一些参与者或实体提供密码 密钥来允许那些参与者访问控制流模型。这样的密钥可以是对称密码密钥、不对称密码密 钥(例如,公共/私人密钥对的公共密钥)或能够用于对经加密的控制流模型的表示进行解 码的一些其他密码密钥。此外,在一些实现方式中,包括应用的机器代码表示的文件能够包 括用于控制流模型的表示的数字签名(例如,从被签名或被加密的控制流模型的表示得到 的哈希或摘要值)和/或数字证书,以允许控制流模型的表示如特定源(例如,应用的开发者 或分发者)所设置的那样被认证。
[0030] 在框120处,处理100确定控制流模型的表示是否被加密。如果控制流模型的表示 未被加密,则处理100进行至框130。如果控制流模型的表示被加密,则处理100进行至框 160,在该框160处,控制流模型的表示被解密。例如,使用处理100可访问的密码密钥来对控 制流模型的表示进行解密。在一些实现方式中,处理100响应于在框120处确定出控制流模 型的表示被加密而请求密码密钥。例如,处理100能够从应用的开发者或分发者所提供的服 务来请求密码密钥,并且然后使用响应于该请求而接收的密码密钥来对控制流模型的表示 进行解密。
[0031] 在框130处,控制流模型在框130处被解释以识别应用的可监视片段。换言之,在框 130处,控制流模型被解释,以识别应用的机器可读表示的表示的片段,该片段能够被装备 (例如,在执行或运行时前被修改)或被观察以监视该应用。应用的可监视片段是应用的表 示的能够用于监视应用的功能的片段(例如,机器代码指令的序列)。例如,应用的表示的能 够被装备(例如,在计算系统的存储器中利用附加指令被修改)以便于应用监视而不会在处 理器处被执行时出故障的片段是应用的可监视片段。作为另一示例,应用的表示的在应用 的执行或运行时期间能够被观察的片段(例如,应用的执行特定操作的片段、应用的包括能 够被容易地观察到结果的指令的片段、或被周期地执行的片段)是应用的可监视片段。
[0032] 在图1所图示的实现方式中,然后在框140处选择在框130处识别的应用的可监视 片段的可监视片段。可监视片段可以基于各种特征、特性、倾向、策略或其他考虑中的任意 一种来选择。例如,可监视片段可以基于装备该监视片段的容易性或简单性来选择。更具体 地,例如,一些可监视片段能够使用比其他可监视片段更少的指令(例如,针对应用的机器 代码表示的更少的修改或添加的指令)来装备,并且能够选择这种可监视片段。
[0033] 作为另一示例,应用监视系统能够包括、访问或解释一个或多个策略,并且能够基 于该一个或多个策略来选择可监视片段。这样的策略可以例如使用具有预定义特性(例如, 特定指令或特定类型指令)的监视片段来定义用于监视应用的偏好或倾
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1