当前位置: 首页 > 专利查询>微软公司专利>正文

代码变形制造技术

技术编号:2850282 阅读:208 留言:0更新日期:2012-04-11 18:40
代码变形包括重写已知代码的至少一个底层控制结构而不影响代码的预期上下文。

【技术实现步骤摘要】
附图说明详细描述参考以下附图。图1示出了可在其中实现代码变形的示例的网络环境。图2示出了代码变形的至少一个示例实现的处理流程。图3示出了根据代码变形的至少一个示例实现的示例统计表。图4示出了能够实现代码变形的至少一个示例的系统的示例。具体实施例方式在此描述了保留上下文的代码变形。图1示出了可在其中实现保留上下文的代码变形的示例网络环境。更具体地,客户机设备105、服务器设备110、“其它”设备115和数据源130中的任何一个可以能够进行如此处所述的代码变形120。而且,设备105、110、115和130可以通过网络125彼此通信地耦合。从而,代码变形120可以由设备105、110、115和130中的任何一个利用本地生成的或在设备105、110、115和130中任一其它设备上生成的至少一个应用程序、程序、方法、函数或可编程和可执行代码的其它组合来实现。客户机设备105可以是各种常规计算设备中的至少一种,包括但不限于,台式个人计算机(PC)、工作站、大型机、因特网装置、机顶盒和媒体设备。而且,客户机设备105可以是能够通过有线和/或无线链路与网络125相关联的任何设备中的至少一种,包括但不限于,个人数字助理(PDA)、膝上型计算机、手机等。而且,客户机设备105可以表示各种数量的上述客户机设备和/或其组合。“其它”设备115也可以由客户机设备105的以上示例来实现。服务器设备110可以向客户机设备105或“其它”设备115提供任何各种数据和/或功能,包括用于代码变形120的那些数据和/或功能。代码变形120的数据或功能可以是公众可用的或者受限的,例如仅限于某些用户或仅当支付了适当的订阅或许可费。服务器设备110可以是网络服务器、应用程序服务器、网络刀片服务器中的至少一种,或者是其任何组合。通常,服务器设备110可以是作为内容来源的任何设备,而客户机设备105可以是或者通过网络125或者通过离线介质接收这样的内容的任何设备。然而,根据此处所述的示例实现,服务器设备105和客户机设备110可以互换地作为发送主机或接收主机。“其它”设备115也可以由服务器设备110的上述示例中的任何一个实现。“其它”设备115还可以是能够根据此处所述的一个或多个示例,在受管执行环境中或在测试环境中进行代码变形120的任何设备。即,“其它”设备115可以是能够进行代码变形,同时保留该代码所对应的应用程序、程序、函数或可编程和可执行代码的其它组合的上下文的任何启用软件的计算或处理设备。这样,“其它”设备115可以是含有在其上实现的操作系统、解释器、转换器、编译器或受管执行环境的至少一个的计算或处理设备。这些示例不旨在以任何方式限制,从而不应该以这样的方式解释。网络125可以表示各种常规网络拓扑结构中的任一种,可以包括任何有线和/或无线网络。网络125还可以利用各种常规网络协议中的任一种,包括公共和/或专有的协议。例如,网络125可以包括因特网、内联网或者一个或多个局域网(LAN)中的至少一部分。数据源130可以表示各种常规计算设备中的任何一个,包括台式个人计算机(PC),它能够结合可以用面向对象的代码编写或不用其编写的应用程序、程序、方法、函数或可编程和可执行代码的其它组合来进行代码变形120。或者,数据源130也可以是工作站、大型计算机、因特网装置、机顶盒、媒体设备、个人数字助理(PDA)、膝上型计算机、手机等中的任何一个,它们能够向另一个工作站发送应用程序、程序、方法或函数的至少一部分。而且,尽管数据源130可以是基于其可判定代码变形120的应用程序、程序、方法或函数的代码的来源,但是数据源130还可被认为至少是由代码变形120的实现导致的代码的来源。不考虑实现,可以从数据源130将可被用作代码变形120的基础的已知应用程序、程序、方法或函数发送至设备105、110和115中的任一个,作为通过网络125的在线通知的一部分或作为离线通知的一部分。代码变形120可以包括重写真实代码(在本文中,之后被替换地称为“顾客应用程序”)的至少一个底层控制结构来生成句法上与真实代码不同但仍保留与真实代码相同的原有语义上下文或含义的代码。作为结果,例如在测试环境中,可以通过接收和/或执行与实际顾客应用程序句法上不同而上下文一致的经变形的代码来测试处理组件,从而向该组件提供逼真的测试场景。即,处理组件可以产生逼真且可理解的测试结果,因为顾客应用程序的处理结果可能已知,从而可以用作经变形的代码的处理结果的对比基础。除测试环境以外,在非受管执行环境或受管执行环境中,代码变形120具有其它相关性。如上所述,可以通过重写顾客应用程序的至少一个底层控制结构,同时保留该顾客应用程序的预期上下文来实现代码变形。更具体地,这样的重写可以包括一个或多个“变形”,变形可以针对顾客应用程序的句法和结构中的至少一个。这样的变形的示例包括,但不限于方法外部结构变形、方法内部结构变形、代码精简变形、优化为目的的变形和存储变异变形。图2示出了作为代码变形120(见图1)的示例实现的处理流程200。代码205至少指的是一个或多个应用程序、程序、方法、函数或可编程和可执行代码的其它组合。根据代码变形120的至少一个示例,代码205可以是以中间语言(下文中称为“IL”)或汇编语言编写的真实代码。IL和汇编语言均可被用作为高级源代码和目标(即,机器可读)代码之间的中介。然而,代码205不限于IL和汇编语言的示例。而是相反,为了实现代码变形120,代码205可以用各种已知语言中的任何一种编写,可对这些语言采样多个句法特征和结构性质中的至少一个。生成器210可被视为可在其中实现代码变形120中的至少一部分的组件或模块。与生成器210相关联的各种操作可以由采样器215和变形器220单独或者共同执行。或者,与生成器210相关联的操作可以由组件或模块本身或由组件和模块与其中包含或关联该模块的网络节点(即,由其中包含或关联生成器210的一个或多个处理器)协作来执行。在其它实现中,生成器210的操作,包括采样器215和变形器220的那些操作,可以被单独或者彼此结合实现为硬件、固件或硬件、固件和软件的某种组合。而且,生成器210的组件或模块可以被提供为如图2所示的公用环境中的分离的组件或模块。然而,生成器210的至少一个替换实施例可将相应的组件或模块部署在分离的处理环境中。甚至,构造器210的组件或模块可以被提供为单个组件或模块。采样器215可以例如从服务器设备110或数据源130(见图1)接收代码205。如上所述,可以用例如IL或汇编语言代码来提供代码205。通常,采样器215然后能够采样和/或译码编写代码205的语言的句法特征和构造性质。从而,可以判断代码205的哪个或哪些部分可以在句法上和结构上至少其中之一变形,同时仍旧保留代码205的该一个或多个部分的原有上下文或意图。还可以判断如何实现代码205的变形。例如,代码205或其部分可以包括可由采样器215读取的数据。这样的数据可以指示代码205的哪个或哪些部分句法上、结构上、或两者都可以被变形。或者,采样器215可以检查代码205或其部分,以找出其中的上下文;而可以作为编码模式的这样的上下文可以被确定为编码的候选。以下参考图3的本文档来自技高网...

【技术保护点】
一种方法,包括:    采样代码;    以良性的方式变形所述代码;    处理所述经变形的代码;以及    将所述代码的已知处理结果与所述经变形的代码的处理结果进行比较。

【技术特征摘要】
US 2005-2-24 11/064,8651.一种方法,包括采样代码;以良性的方式变形所述代码;处理所述经变形的代码;以及将所述代码的已知处理结果与所述经变形的代码的处理结果进行比较。2.如权利要求1所述的方法,其特征在于,所述代码包括应用程序、程序、方法、函数和可执行代码的组合之一的至少一部分。3.如权利要求1所述的方法,其特征在于,所述采样包括译码所述代码的句法特征和构造性质中的至少一个。4.如权利要求1所述的方法,其特征在于,所述变形包括重写所述代码的至少一个底层构造,同时仍保留所述代码的上下文。5.如权利要求1所述的方法,其特征在于,对所述代码的变形包括以下的至少其中之一添加参数;扩展原语类型的宽度;重新排序参数;重新排序局部变量;添加局部变量;冗余使用外部变量;添加冗余循环;在控制流中缝合;展开常量;使用常量替换方法;引入假栈深度;折叠常量;卷起循环;引入公共子表达式;通过类型局部变量转换;以及将局部变量转换至另一存储空间。6.如权利要求1所述的方法,其特征在于,所述变形是在受管执行环境中执行的。7.如权利要求1所述的方法,其特征在于,所述处理包括编译所述代码。8.一种含有一条或多条可执行指令的计算机可读介质,当读取所述可执行指令时,引起一个或多个处理器变形已知代码来产生经变形的代码;以及测试所述变形是否为良性。9.如权利要求8所述的计算机可读介质,其特征在于,所述变形已知代码的一条或多条指令引起所述一个或多个处理器在句法上和结构上的至少其中之一来重写所述已知代码的至少一部分。10.如权利要求8所述的计算机可读介质,其特征在于,所述变形已知代码的一条或多条指令引起...

【专利技术属性】
技术研发人员:BS瓦兹沃斯SC舍尔茨
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1