分析二进制码的制作方法

文档序号:6570376阅读:231来源:国知局
专利名称:分析二进制码的制作方法
分析二进制码祖旦 冃足背景和相关技术计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信 息的能力已改变了人们生活和工作的方式。计算机系统现在通常执行许多任务 (例如,文字处理、调度和数据库管理),这些任务在计算机系统出现以前是 人工执行的。最近,计算机系统已被彼此耦合,并被耦合到其他电子设备,以 形成计算机系统和其他电子设备可以在其上传送电子数据的有线和无线计算 机网络。结果,在计算机系统处执行的许多任务(例如,语音通信、访问电子邮件、控制家用电子设备、Web浏览、以及打印文档)包括多个计算机系统和 /或其他电子设备之间经由有线和/或无线计算机网络的通信(例如,电子消息 交换)。从而,存在可响应于软件应用程序的执行而可由通用计算系统实现的大 量的各种功能和应用程序。然而,计算系统的效用和功能依赖于源代码的正确 编码,源代码被编译或解释成实际上由处理器执行的二进制指令。如果存在编 码或设计错误(通常被称为"隐错"),则这将常常导致与预期行为的背离。此外,软件编程员和设计者的创造性导致日益复杂且强大的软件应用程 序。作为其复杂性。在其他代码分析机制中,针对进行源控制的经编译代码进行远程(例如, 基于服务器)的分析。某些分析是资源密集的且完成会花费大量时间(例如, 数小时)。在某些环境中,将这种类型的分析卸载给远程(以及潜在更强大) 的计算机是有利的。使远程计算机系统执行分析释放了用于开发代码的开发员 的计算机,而不会使资源密集的分析消耗资源。然而,远程分析相比本地分析生成结果要花费长得多的时间,例如通常 彻夜进行。因此,远程分析与本地代码分析相比在生成结果时有更长等待时间。 在众多开发环境中,开发人员不能等待数个小时以便接收登录的结果(例如,这可能要求基于这些结果的进一步修改)。此外,为了实现远程代码分析,可要求开发人员开发用于通过调査和解 决来管理问题的基础结构(例如,管理结果数据库的web应用程序)。远程代 码分析也阻止开发人员执行代码分析(例如,过程间分析)在登录之前预先分 析一组预期的改变。另外,在开发过程期间利用现有的远程代码分析技术通常 是太过昂贵的。从而,在某些开发环境中,幵发人员由于时间和成本的限制转 而使用较不强大的本地代码分析。简要概述本发明延及用于分析二进制代码的方法、系统和计算机程序产品。在某 些实施例中,接收二进制代码和代码分析规则。至少一个代码分析规则指示与 二进制代码的功能有关的查询。用被配置成确定查询结果的分析代码实现査 询。确定査询的有效结果不被高速缓存在结果存储中。作为响应,调用分析代 码来确定査询的结果。该结果被高速缓存在结果存储中,使得当在将来接收査 询时,可从结果存储访问结果而不必调用分析代码来确定结果。返回査询的结 果。在其他实施例中,接收二进制代码和代码分析规则。至少一个代码分析 规则指示与二进制代码的功能有关的査询。用被配置成确定查询结果的分析代 码实现查询。确定经高速缓存的査询结果被高速缓存在结果存储中。在调用用 来确定查询的结果的分析代码之后,经高速缓存的结果被高速缓存到结果存储 中。确定结果是有效的。检索经高速缓存的结果,以避免对分析代码的进一步 调用。返回经高速缓存的査询的结果。提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一 些概念。该概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨 在用于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其部分根据本描述将 是显而易见的,或可通过对本发明的实践领会。本发明的特征和优点可通过在 所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他 特征将通过以下描述和所附权利要求书变得更加完全明显,或可通过对下文中所述的本发明的实践来领会。 附图简述为了描述可获取本发明的上述和其他优点和特征的方式,将通过引用附 图中示出的本发明的特定实施例来呈现以上简要描述的本发明的更具体描述。 可以理解这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限 制,本发明将通过使用附图用附加特征和细节来描述和说明,附图中

图1示出了便于分析二进制代码的示例计算机体系结构。 图2示出了用于分析二进制代码的示例方法的流程图。详细描述本发明延及用于分析二进制代码的方法、系统和计算机程序产品。在某 些实施例中,接收二进制代码和代码分析规则。至少一个代码分析规则指示与 二进制代码的功能有关的查询。用被配置成确定査询结果的分析代码实现查 询。确定查询的有效结果不被高速缓存在结果存储中。作为响应,调用分析代 码来确定査询的结果。该结果被高速缓存在结果存储中,使得当在将来接收査 询时,可从结果存储访问结果而不必调用分析代码来确定结果。返回查询的结 果。在其他实施例中,接收二进制代码和代码分析规则。至少一个代码分析 规则指示与二进制代码的功能有关的査询。用被配置成确定查询结果的分析代 码实现查询。确定经高速缓存的査询结果被高速缓存在结果存储中。在调用用 来确定查询的结果的分析代码之后,经高速缓存的结果被高速缓存到结果存储 中。确定结果是有效的。检索经高速缓存的结果,以避免对分析代码的进一步 调用。返回经高速缓存的查询的结果。本发明的实施例可以包括含有计算机硬件的专用或通用计算机,这将在 以下做出进一步讨论。本发明的范围内的实施例也包括用于携带或其上储存有 计算机可执行指令或数据结构的计算机可读介质。这样的机器可读介质可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机可读存储介质,诸如RAM、 ROM、 EEPROM、 CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令 或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其 他介质。在本描述和所附权利要求书中,"网络"被定义为允许电子数据在计算 机系统和/或模块之间的传输的一个或多个数据链路。当信息在网络或另一通信 连接(硬连线、无线或硬连线或无线的组合)上传输或提供给计算机时,计算 机将连接完全视为计算机可读介质。因此,作为示例,而非限制,计算机可读 介质可包括可用于携带或存储计算机可执行指令或数据结构形式的所需程序 代码装置并可由通用或专用计算机访问的网络或数据链路。计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理 设备执行某一功能或某组功能的指令和数据。例如,计算机可执行指令可以是 二进制代码、诸如汇编语言等中间格式指令、或甚至源代码。尽管用结构特征 和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义 的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求 的示例形式而公开的。本领域的技术人员将理解,可以在许多类型的计算机系统配置的网络计 算环境中实践本发明,这些计算机系统配置包括个人计算机、膝上型计算机、 手持式设备、多处理器系统、基于微处理器的或可编程的消费者电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机等。也可以在分布式系统环境中实践本发明,在分布式系统环境中,通过网络连接(或者通过 硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的 本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于 本地和远程存储器存储设备中。图1示出了便于分析二进制代码的计算机体系结构100的示例。在计算 机体系结构100中描述了各种组件,包括代码分析模块107、分析引擎109、 高速缓存接口模块111和结果高速缓存112。各个组件中的每一个可以被连接 到诸如局域网("LAN")、广域网("WAN")或甚至因特网等网络。因 此,各个组件可对连接至网络的其他组件收发数据。从而,各组件可以通过网 络创建消息相关数据并交换消息相关数据(例如,网际协议("IP")数据报和利用IP数据报的其他高层协议,诸如传输控制协议("TCP")、超文本传输协议("HTTP")、简单邮件传输协议("SMTP")等)。所示组件可位 于同一计算机系统或跨多个不同的计算机系统分布。一般而言,代码分析模块107被配置成根据分析规则来分析二进制代码 (例如,经编译的源代码)。例如,代码分析模块170可分析二进制代码来计 算函数可返回的异常或结果代码的闭包,计算调用站点是否可能返回存储器分 配,计算函数的调用图,计算变量和参数的约束条件,确定值可不可以为空, 聚集安全性许可(例如,用于受管的代码)等。分析引擎109可例如从正在请求二进制代码分析的另一模块接收二进 制代码和相应的分析规则。分析规则中包括的可以是与二进制代码的功能相关 的一个或多个代码查询。为了实现针对二进制代码的所接收的代码査询,分析 引擎可执行被设计成为所接收的代码查询生成结果的分析代码。分析代码可以是被包括在代码分析模块107中的内部分析代码。或者, 分析代码可以是可由代码分析模块107访问并加载的外部分析代码。例如,在 某些实施例中,插件系统组织、描述并管理专用于执行各种分析和推断任务的 插件。分析代码(内部和外部的)可被配置成供针对特定程序执行。在执行分析代码以实现所接收的代码查询之前,分析引擎109可向高速 缓存接口模块111提交高速缓存查询。高速缓存查询可请求高速缓存接口模块 111检査结果髙速缓存112来确定所接收的代码査询的有效结果是否被高速缓 存在结果高速缓存112中。如果有效结果被高速缓存在结果高速缓存112中, 则高速缓存接口模块lll可例如向请求代码分析的其他模块返回经高速缓存的 结果。因此,得以避免对(潜在资源密集的)分析代码的调用。如果有效结果未被高速缓存在结果高速缓存112中,则分析引擎109 可执行分析代码以生成所接收的代码查询的结果。生成的结果可被发送给高速 缓存接口模块111。高速缓存接口模块111可将所生成的结果高速缓存在结果 高速缓存112中,使得所生成的结果可被提供给同一代码查询的后续实例,而 无需调用(潜在资源密集的)分析代码。高速缓存接口模块111可包括用于基于随后对之前分析的二进制代码 的修改来使经高速缓存的结果无效的机制。例如,高速缓存接口模块可包括用于验证二进制代码的字节计数和日期/时间戳的试探法。当所生成的指定二进制 代码的结果要被高速缓存时,高速缓存接口模块111可计算所指定的二进制代 码的字节计数和日期/时间戳,并将字节计数和日期/时间戳随结果一起高速缓 存在结果高速缓存112中。响应于对经高速缓存的结果的后续高速缓存査询(由 在分析引擎109处接收代码査询引起),高速缓存接口模块lll可为该指定的 二进制代码重新计算字节计数和日期/时间戳。高速缓存接口模块111可将经高速缓存的字节计数和经高速的日期/时 间戳分别与经重新计算的字节计数和经重新计算的日期/时间戳作比较。如果经 高速缓存的字节计数和经重新计算的字节计数匹配(例如,相同)且经高速缓 存的日期/时间戳和经重新计算的日期/时间戳匹配(例如,相同),则经高速 缓存的结果被确定为有效,并返回经高速缓存的结果作为代码査询的结果。另 一方面,如果经高速缓存的字节计数和经重新计算的字节计数不匹配(例如, 不相同)和/或经高速缓存的日期/时间戳与经重新计算的日期/时间戳不匹配(例如,不相同),则经高速缓存的结果被无效并从结果高速缓存112中清除。高速缓存结果也可通过依赖性分析按照更小的粒度来无效(甚至小至单 个二进制)。在某些实施例中,在结果被无效之后无效结果被保留在结果高速缓存112中一定量的时间。从而,在指定的时间间隔或响应于某一事件,可从结果 高速缓存112移除被无效的经高速缓存的结果。图2示出了用于分析二进制代码的示例方法200的流程图。方法200 将关于计算机体系结构100中的组件和数据来描述。方法200包括接收二进制代码的动作(动作201)。例如,分析引擎109 可接收二进制代码101。二进制代码101可包括多个过程,例如过程101A、101B 和101C,它们互操作以尝试实现所设计的二进制代码101的设计功能。例如, 过程IOIA可调用过程IOIB,过程101B又可调用过程IOIC,依此类推。因此, 每一调用过程的适当操作依赖于对其调用树的叶子过程的调用链中的每一其 他过程的适当操作。例如,过程101C (被调用的过程)中的不适当操作可引 起过程101A (进行调用的过程)中相应的不适当操作。二进制代码包括可在计算机系统处执行的基本上任何代码。例如,二进制代码包括诸如。++、 C#、 Visual Basic等计算机语言的经编译的源代码指令, 编译供由计算机系统的处理器执行。二进制代码也包括要被进一步编译供虚拟 机在由硬件处理器执行之前执行的中间语言指令。方法200包括接收包括与二进制代码的功能有关的査询的代码分析规 则的动作(动作202)。例如,分析引擎109可接收分析规则102。分析规则 可包括用于检査二进制码的各个不同特性,诸如安全性设置、与设计指导方针 的顺应性等的规则,以及指示与二进制代码的功能有关的查询的规则。例如,分析规则102包括指示与二进制代码101的功能有关的査询的代 码査询103。代码査询可通过执行代码分析模块107外部可访问的分析代码, 诸如分别包括在插件104A、 104B和104C中的分析代码106A、 106B和106C 来实现。例如,代码查询103可通过执行来自插件104A的分析代码106A实 现。或者,代码查询可通过执行被包括在代码分析模块107中的分析代码来实 现。例如,代码查询103可通过执行分析代码108来实现。方法200包括确定该査询的结果是否存在(判定框203)。例如,响应 于接收二进制的代码101和分析规则102,分析引擎109可将高速缓存査询131 提交给高速缓存接口模块111。响应于高速缓存査询131,高速缓存接口模块 111可确定经高速缓存的二进制代码101的代码查询103的结果是被高速缓存 在结果高速缓存112中,还是经高速缓存的二进制代码101的代码查询103的 结果未被高速缓存在结果高速缓存112中。作为对分析代码(例如,分析代码106A或分析代码108)之前调用的 结果,所生成的二进制代码101的代码査询103的结果可被高速缓存在结果高 速缓存112中。因此,方法200可包括确定经高速缓存的查询结果被高速缓存 在结果存储中的动作。例如,高速缓存接口模块111可确定结果123是经高速 缓存的二进制代码101的代码查询103的结果。当经高速缓存的査询结果存在 (判定框203处的是)时,方法200前进至判定框204。另一方面,可能没有任何对分析代码的之前调用生成了二进制代码101 的代码査询103的结果。例如,分析代码106A或分析代码108可能之前从未 对二进制代码111进行过调用。或者,可能出于某种原因,对分析代码106A 或分析代码108的调用的结果可能不再被高速缓存在结果高速缓存112中。例如,之前存储的结果可被刷新而移出结果高速缓存112。因此,方法200可包括确定经高速缓存的查询结果未被高速缓存在结果存储中的动作。例如,高速缓存接口模块111可确定针对二进制代码111调用分析代码106A (以实现代码査询103)的结果未被高速缓存在结果高速缓存 112中。当经高速缓存的査询结果不存在(判定框203处的否)时,方法200 前进至动作205。方法200包括确定该査询的结果是否有效(判定框204)。例如,响应 于找到结果123 (对二进制代码101的代码查询103),高速缓存接口模块111 可确定结果123是否有效。高速缓存接口模块111可将当前表示二进制代码101 的数据(例如,当前时戳和当前校验和)与高速缓存结果123时表示二进制代 码101的数据(例如,时戳124和校验和126)进行比较。作为比较的结果,高速缓存接口模块111可能确定当前时戳和当前校验 和分别匹配时戳124和校验和126。因此,方法200可包括确定经高速缓存的 结果有效的动作。例如,高速缓存接口模块111可确定结果123有效。当经高 速缓存的査询结果有效(判定框204处的是)时,方法200前进至动作206。方法200包括检索结果的动作(动作206)。例如,高速缓存接口模块 111可从结果高速缓存112检索结果123。另一方面,作为比较的结果,高速缓存接口模块lll可能确定当前时戳 和/或当前校验和分别与时戳124和/或校验和126不匹配。因此,方法200可 包括确定经高速缓存的结果无效的动作。例如,高速缓存接口模块lll可确定 结果123无效。当经高速缓存的查询结果无效(判定框204处的否)时,方法 200前进至动作205。方法200包括调用分析代码以生成査询的结果的动作(动作205)。例 如,分析引擎109可针对二进制代码101调用分析代码106A以生成代码査询 103的结果113。分析代码106A可包括用于计算可由过程IOIA、 IOIB和101C 中任何一个返回的异常或结果代码的闭包,计算过程101A、 101B和101C中 的任何一个可能返回存储器分配,计算过程IOIA、 101B和101C中的任何一 个的调用图,计算过程IOIA、 101B和101C中的任何一个的变量和参数约束 条件,确定对过程IOIA、 101B和101C中的任何一个值可不可以为空,聚集二进制代码101的安全性许可等。方法200包括高速缓存结果的动作(动作207)。例如,分析引擎109 可将结果113发送给高速缓存接口模块111。高速缓存接口模块111可将结果 高速缓存在结果高速缓存112中。在某些实施例中,分析代码(例如,分析代 码106A)可向分析引擎109和/或高速缓存接口模块111指示其结果适于高速 缓存。例如,当分析代码被配置成执行频繁重复的分析时,分析代码可包括其 结果适于高速缓存的指示。在其他实施例中,分析引擎109和/或高速缓存接口 模块111包括被执行来确定分析结果要被高速缓存的附加逻辑。分析引擎109或高速缓存接口模块111也为所生成的结果生成时戳和校 验和。例如,分析引擎109可为结果113生成时戳和校验和,并将时戳和校验 和(例如,时戳114和校验和116)连同结果113—起发送给高速缓存接口模 块111。 或者,高速缓存接口模块111可为结果113生成时戳和校验和(例 如,时戳114和校验和116)。高速缓存接口模块lll可随经高速缓存的结果 一起高速缓存时戳和校验和(无论是接收到还是生成的)。例如,高速缓存接 口模块111可随结果113高速缓存时戳116和校验和116。方法200还包括返回结果的动作(动作208)。在某些实施例中,高速 缓存接口模块111返回结果。例如,响应于高速缓存査询131,高速缓存接口 模块111可在响应132中包括结果123,并向分析引擎109返回响应123。或 者或与响应132并行地,高速缓存接口模块lll可(例如,向显示设备)输出 结果123。在其他实施例中,分析引擎109返回结果。例如,在生成结果113之后, 分析引擎109可(例如,向显示设备)输出结果113。或者,响应于接收响应 132,分析引擎109可(例如,向显示设备)输出结果123。本发明的实施例可包括用于针对目标过程请求对分析问题的回答的系 统和应用程序编程接口 ( "API" ) 。 API可查阅持久结果存储以确定分析结 果是否已经存在且有效。如果结果不存在或现有结果是无效的,则系统在运行 时调用相关分析代码并将所生成的结果返回给调用者。在某些实施例中,在每次执行的分析和与计算或推断昂贵分析问题的回 答的分析中间加以区分。要每次执行的分析的结果可被高速缓存,使得访问重复分析的结果更高效。相应地,本发明的实施例在分析和被分析的代码之间建立正式的关系。该正式关系便于在登录之前针对预测的一组代码改变在降低的分析时间成本的情况下在开发人员计算机系统上进行更强大的代码分析。本发明的实施例尤 其对其中代码的一部分相对于更大量的静态代码进行改变的实施例有用。例如,实施例可用于在本地系统上建立提供重要的分析值而不损害性能的集中的 结果高速缓存。本发明可具体化为其他具体形式而不背离其精神或本质特征。所述实施 例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所 附权利要求书而非前述描述指示。落入权利要求书的等效方式的含义和范围内 的所有改变应被权利要求书的范围涵盖。
权利要求
1.在计算机系统处,一种用于分析二进制代码的方法,所述方法包括接收二进制代码的动作;接收代码分析规则的动作,至少一个代码分析规则指示与所述二进制代码的功能相关联的查询,所述查询用被配置成确定所述查询的结果的分析代码来实现;确定所述查询的有效结果不被高速缓存在结果存储中的动作;调用所述分析代码来确定所述查询的结果的动作;将所述结果高速缓存在所述结果存储中,使得当在将来接收所述查询时,可从所述结果存储访问所述结果而不必调用所述分析代码来确定所述结果的动作;以及返回所述查询的所述结果的动作。
2. 如权利要求1所述的方法,其特征在于,所述接收二进制代码的动作包 括接收经编译的源代码和中间语言指令的至少其中之一的动作。
3. 如权利要求1所述的方法,其特征在于,所述接收代码分析规则的动作 包括接收用于分析二进制代码的特性的代码分析规则的动作。
4. 如权利要求1所述的方法,其特征在于,所述接收用于分析二进制代码 的特性的代码分析规则的动作包括接收用于分析与二进制代码相关联的安全 性设置、与所述二进制代码的设计指导方针的顺应性以及所述二进制代码的功 能中的一个或多个的代码分析规则的动作。
5. 如权利要求1所述的方法,其特征在于,所述确定所述査询的有效结果 未被高速缓存在结果存储中的动作包括确定所述结果存储中没有高速缓存所 述査询的结果的动作。
6. 如权利要求1所述的方法,其特征在于,所述确定所述査询的有效结果 未被高速缓存在结果存储中的动作包括确定所述査询的无效结果被高速缓存 在所述结果存储中的动作。
7. 如权利要求6所述的方法,其特征在于,所述确定所述査询的无效结果 被高速缓存在所述结果存储中的动作包括确定对应于所接收的二进制代码的 时戳和校验和的至少其中之一分别不同于对应于所述代码査询之前生成的结 果的经高速缓存的时戳和校验和的动作。
8. 如权利要求1所述的方法,其特征在于,所述调用所述分析代码来确定 所述査询的结果的动作包括调用包括在接收所述二进制代码和所述代码查询 的代码分析模块中的分析代码的动作。
9. 如权利要求1所述的方法,其特征在于,所述调用所述分析代码来确定 所述查询的结果的动作包括调用包括从接收所述二进制代码和所述代码查询 的分析模块外部的插件中调用分析代码的动作。
10. 如权利要求l所述的方法,其特征在于,所述调用所述分析代码来 确定所述査询的结果的动作包括分析所述二进制代码以计算可由函数返回的 结果代码、调用站点是否可能返回存储器分配、函数的调用图、变量和参数的 约束条件、值可不可以为空、以及聚集安全性许可中的一个或多个的动作。
11. 如权利要求l所述的方法,其特征在于,将所述结果高速缓存在所 述结果存储中的动作包括在可网络连接到接收所述二进制代码的计算机系统 的结果存储中高速缓存所述结果的动作。
12. 在计算机系统处, 一种用于分析二进制代码的方法,所述方法包括 接收二进制代码的动作;接收代码分析规则的动作,至少一个代码分析规则指示与所述二进制代码的功能相关联的査询,所述查询用被配置成确定所述查询的结果的分析代码来 实现;确定所述查询经高速缓存的结果被高速缓存在结果存储中的动作,所述经 高速缓存的结果在调用用于确定所述查询的结果的所述分析代码之后被高速 缓存在所述结果存储中;确定所述经高速缓存的结果有效的动作;检索所述经高速缓存的结果以避免对所述分析代码的进一步调用的动作;以及返回所述经高速缓存的结果的动作。
13. 如权利要求12所述的方法,其特征在于,接收二进制代码的动作 包括接收经编译源代码的动作。
14. 如权利要求12所述的方法,其特征在于,所述接收代码分析规则 的动作包括接收用于分析二进制代码的特性的代码分析规则的动作。
15. 如权利要求12所述的方法,其特征在于,所述接收用于分析二进 制代码的特性的代码分析规则的动作包括接收用于分析与二进制代码相关联 的安全性设置、与所述二进制代码的设计指导方针的顺应性以及所述二进制代 码的功能中的一个或多个的代码分析规则的动作。
16. 如权利要求12所述的方法,其特征在于,所述确定所述査询的经 高速缓存的结果有效的动作包括确定对应于所接收的二进制代码的时戳和校 验和分别匹配对应于所述代码查询之前生成的结果的经高速缓存的时戳和校 验和的动作。
17. 如权利要求12所述的方法,其特征在于,所述检索所述经高速缓 存的结果的动作包括从可网络连接到接收所述二进制代码的计算机系统的结 果存储中检索经高速缓存的结果的动作。
18. —种计算机系统,包括 一个或多个处理器; 系统存储器;以及一个或多个其上存储代码分析模块的计算机可执行指令的计算机可读 存储介质,所述代码分析模块被配置成执行以下动作 接收二进制代码;接收代码分析规则,至少一个代码分析规则指示与所述二进制代码 的功能相关联的查询,所述查询用被配置成确定所述查询的结果的分析代 码来实现;确定所述查询的有效的经高速缓存的结果是否被高速缓存在结果存 储中;当有效结果未被高速缓存时调用所述分析代码来确定所述查询的结果;以及将所述结果高速缓存在所述结果存储中,使得当在将来接收所 述査询时,可从所述结果存储访问所述结果而不必调用所述分析代 码来确定所述结果; 当有效结果被高速缓存时-检索所述经高速缓存的结果以避免对所述分析代码的进一步调 用;以及返回所述查询的结果。
19. 如权利要求18所述的计算机系统,其特征在于,被配置成确定所 述査询的有效的经高速缓存的结果是否被高速缓存在结果存储中的所述代码 分析模块包括被配置成确定对应于所接收的二进制代码的时戳和校验和是否 分别匹配对应于所述代码査询之前生成的结果的经高速缓存的时戳和校验和 的分析模块。
20. 如权利要求18所述的计算机系统,其特征在于,所述代码分析模块包括分析引擎和高速缓存接口模块,其中被配置成返回所述査询的结果的所 述代码分析模块包括被配置成将结果返回给所述分析引擎的所述高速缓存接 口模块。
全文摘要
本发明延及用于分析二进制代码的方法、系统和计算机程序产品。接收二进制代码。接收指示与二进制代码的功能相关的查询的代码分析规则。用被配置成确定查询结果的分析代码实现查询。确定有效的经高速缓存的查询结果是否被高速缓存在结果存储中。如果为否,则调用分析代码来确定查询的结果且结果被高速缓存。相应地,当在将来接收该查询时,结果可从结果存储访问而无需调用分析代码来确定结果。如果为是,则检索经高速缓存的结果,以避免对分析代码的进一步调用。结果被返回。
文档编号G06F17/00GK101336428SQ200680051763
公开日2008年12月31日 申请日期2006年12月28日 优先权日2006年1月26日
发明者G·J·凡, M·C·范宁, N·P·奎热拉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1