CN1825277A - 代码变形 - Google Patents

代码变形 Download PDF

Info

Publication number
CN1825277A
CN1825277A CNA2006100043233A CN200610004323A CN1825277A CN 1825277 A CN1825277 A CN 1825277A CN A2006100043233 A CNA2006100043233 A CN A2006100043233A CN 200610004323 A CN200610004323 A CN 200610004323A CN 1825277 A CN1825277 A CN 1825277A
Authority
CN
China
Prior art keywords
code
distortion
computer
readable medium
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006100043233A
Other languages
English (en)
Other versions
CN1825277B (zh
Inventor
B·S·瓦兹沃斯
S·C·舍尔茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1825277A publication Critical patent/CN1825277A/zh
Application granted granted Critical
Publication of CN1825277B publication Critical patent/CN1825277B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B24GRINDING; POLISHING
    • B24CABRASIVE OR RELATED BLASTING WITH PARTICULATE MATERIAL
    • B24C9/00Appurtenances of abrasive blasting machines or devices, e.g. working chambers, arrangements for handling used abrasive material
    • B24C9/003Removing abrasive powder out of the blasting machine
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B24GRINDING; POLISHING
    • B24CABRASIVE OR RELATED BLASTING WITH PARTICULATE MATERIAL
    • B24C7/00Equipment for feeding abrasive material; Controlling the flowability, constitution, or other physical characteristics of abrasive blasts
    • B24C7/0046Equipment for feeding abrasive material; Controlling the flowability, constitution, or other physical characteristics of abrasive blasts the abrasive material being fed in a gaseous carrier
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B24GRINDING; POLISHING
    • B24CABRASIVE OR RELATED BLASTING WITH PARTICULATE MATERIAL
    • B24C9/00Appurtenances of abrasive blasting machines or devices, e.g. working chambers, arrangements for handling used abrasive material
    • B24C9/006Treatment of used abrasive material
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Investigating Strength Of Materials By Application Of Mechanical Stress (AREA)
  • Special Wing (AREA)
  • Storage Device Security (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Devices For Executing Special Programs (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)

Abstract

代码变形包括重写已知代码的至少一个底层控制结构而不影响代码的预期上下文。

Description

代码变形
附图说明
详细描述参考以下附图。
图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的示例描述这样的上下文,即模式的示例。
变形器220可以充分利用上述关于代码205的哪个部分将被变形以及以何种方式实现变形的判断,来重写代码205的至少一个底层控制结构,以生成与之前输入到生成器210的代码205句法上不同而上下文一致的经变形的代码。例如,可以在测试环境中利用代码205的经变形的版本,但这样的场景仅作为示例提供,而不旨在以任何方式受限。
“变形”可以被认为是对与应用程序、程序、方法、函数或可编程和可执行代码的至少一部分相对应的句法或结构(即,构造)中的至少一个的良性操纵。更具体地,可以通过重新编码、替换或重构代码205的至少一部分来生成经变形代码的多个变更。因此,在测试环境中,可以充分利用顾客应用程序来生成目标为难以使用真实组件或模块的复杂测试情形。
目标组件225可以是接收经变形代码(即,含有在生成器210处,尤其是变形器220处重新编码、替换、或重构的一个或多个部分的代码)的一个或多个变化的组件或模块。目标组件225可以从在测试环境中接收经变形的代码而获益。即,取决于作为代码205在生成器210处接收的应用程序、程序、方法、函数或可编程和可执行代码的其它组合的量,变形器220可以生成成百万甚至十亿数量级的经变形的代码。可能影响在生成器210处生成的经变形代码的变化的数量的另一因素可以包括将相对于代码205或目标组件225来测试的变形本身的量。因此,目标组件225可以被展示给其结果已知的数量相当可观的测试代码,从而,可以快速标识对于代码205和/或目标组件225的随变形产生的缺陷或其它问题。
图3示出了代码变形120(见图1)的示例。更具体地,该示例描述了由变形器220(见图2)实现的代码205至经变形代码325的变换。因此,参考图2中所述的各种特征来描述图3的示例。
代码205可以包括可以对其实现变形的程序、方法、操作、应用程序、函数或可编程和可执行代码的其它组合的至少一部分。在图2的示例中,代码205可以包括方法下载数据310、读数据315和写数据325。
根据至少一个示例,代码205可以由采样器215采样,以确定代码205的哪个或哪些部分将关于句法或结构,或这两者变形,同时仍旧保留代码205的原有上下文或意图,以及可以实现哪种或哪些变形。根据替换示例,在不受益于采样器215的情况下,可以作出关于何处及以何种方式进行对代码205的变形的决策,从而可以直接将代码205输入至变形器220。
经变形的代码325可以包括含有以良性方式重写的至少一个底层控制结构的代码205,使得经变形的代码325和代码205具有相同的语义但是不同的句法和/或结构。变形1330和变形2335可以是可注入代码205中以产生经变形的代码325的句法上或结构上的变形,或是两者的结合。即,变形1330和变形2335单独或者共同可以用作作为代码205输入的一个或多个操作、应用程序、方法、函数或可编程和可执行代码的其它组合的良性变换。而且,应该注意,代码205不限于这两种变形。变形1330和变形2335仅作为示例提供。
可以单独或者以各种组合实现为图3的变形1330和变形2335的变形的非限制性示例包括:
方法外部结构变形:可以通过向方法添加参数、扩展原语类型的宽度、或改变参数的顺序来变形(即,其中的至少一个底层控制结构被重写,同时保留原有的预期上下文)的代码205。例如,向方法添加的参数可以包括简单对象类型、简单类型、无用单元收集类型(受管的执行环境中)、数组和值类型。
方法内部结构变形:代码205可以通过改变局部变量的使用顺序;添加局部变量;冗余使用外部变量(例如,使用外部静态字段或使用外部方法,两者都是本机且无副作用地管理的);添加冗余循环;通过异常处理在控制流中缝合(受管执行环境中);展开一个或多个常量;使用方法替换常量;以及引入假栈深度(falsestack depth)来变形。
代码精简变形:代码205可以通过折叠一个或多个常量以及将代码卷成循环来变形。
优化为目的的变形:代码205可以通过卷起一个或多个循环;以及引入一个或多个公共子表达式来变形。优化为目的的变形的效果可以对代码205或其部分内的优化进行计数。
存储变异变形:代码205可以通过经由类型局部变量转换;和将局部变量转换至另一存储空间来变形。
上述的变形仅作为示例提供,且不旨在以任何方式限制代码变形120的实现。而且,变形的这些和其它示例旨在以良性的方式重写代码205的至少一个底层控制结构。即,变形旨在改变代码的句法或结构或这两者,而不影响相对于目标组件225的代码205的处理结果。从而,为代码变形120实现的特定变形可以被假定为良性的,且可以实现来致力于测试一个特定的变形是否实际上是良性的。
目标组件225可以是接收经变形代码325(即,按照上述变形的一个或多个来变形的代码205)的组件或模块。目标组件225可以从变形器220取决于作为代码205接收至生成器210,尤其是变形器220中的方法、应用程序、程序、函数或可编程和可执行代码的其它组合的量而生成成百万甚至十亿数量级的代码205的经变形的变化来获益。即,目标组件225可以被展示给大量测试代码,对这些测试代码已知期望结果,因为可以假定对于目标组件225的代码205的处理结果是已知的。从而,可以轻易地检测到关于变形,至少关于目标组件225的故障或其它缺陷。
图4示出了可在其中实现代码变形120(见图1)的示例系统400。更具体地,系统400示出了如何在受管执行环境415中实现代码变形120。以下参考图2和3的元素描述系统400。然而,系统400的这一构造和配置仅作为示例提供,而不应被推断为以任何方式限制。
受管执行环境415可以为应用程序提供一个或多个例程以在操作系统中正确地执行,因为应用程序、程序、方法、函数或可编程和可执行代码的其它组合可能要求另一软件系统以便执行。因此,这样的代码可以调用一个或多个受管执行环境例程,这些例程可以驻留在应用程序和操作系统之间,而受管执行环境例程可以调用合适的操作系统例程。
受管执行环境被开发来提高在包括服务器、台式计算机、膝上型计算机以及各种移动处理设备等范围渐增的处理设备上的软件执行的可靠性。受管执行环境可以向运行在处理设备(例如,以上关于图1描述的设备105、110、115和130)上的应用程序提供抽象和服务层。受管执行环境还可以向这一应用程序提供包括出错处理和自动存储器管理的能力。受管执行环境的示例可以包括:Visual Basic运行时执行环境;用于运行例如Java例程的Java虚拟机运行时执行环境;或者用于在执行调用例程之前将例如Microsoft.NETTM编译为机器语言的公共语言运行库(CLR)。
如上参考图2和3描述的代码205可以指的是至少例如以IL或汇编语言编写的应用程序、程序、方法、函数或可编程和可执行代码的其它组合的一个或多个。
如上参考图2描述的生成器210可以指的是用于实现代码变形120的至少一部分的一个或多个组件。根据至少一个示例,生成器210可以在非受管执行环境中访问数据源以接收代码205。或者,在受管执行环境中的至少一个示例可以包括,生成器210访问执行引擎420来接收代码205。
执行引擎420至少在受管执行环境中可以指的是指示如何管理和操纵代码205的代码205的一部分。
不论生成器210如何接收代码205,生成器210可以实现示例进程200(见图2),通过该进程产生经变形代码325(见图3)。即,生成器210可以用与代码205之前的形式在语义上不同但是上下文一致的方式重写代码205的一个或多个底层控制结构(例如,句法、结构或其两者)。而且,生成器210可以利用经测试的或已被证明的变形来生成经变形的代码325的多个变更。
根据测试环境的至少一个示例,在受管执行环境415中,生成器210然后可以将经变换的代码325提交给编译器425。这样,通过经受经变形的代码325的无数可能的变更,可以测试编译器425处理代码的不同组合以及揭示编码故障的能力。
编译器425可以被认为仅是可由生成器210生成的经变形的代码325的变更的分值的目标对象的一个示例。然而,特意地,虽然不是排他地,代码变形可能旨在用于测试目的。因此,根据图4的至少一个替换示例,随机生成的代码的目标可以是受管执行环境415内的任何组件或模块,对其可以通过接收已知预期结果的经变形的代码的分值(至少按照百万的数量级)来完成该特意的测试。
测试器430可以指的是非受管执行环境或受管执行环境415中收集编译器425或经变形的代码的替换目标对象的测试数据的组件或模块。
从而,至少一个底层控制结构(例如,句法特征或结构性质)被重写,且对其期望处理结果已知的代码均可使得非受管和受管执行环境中的测试变得更有目的性和有效。
以上关于图1-4所述的示例可以在含有组件的计算环境中实现,组件包括但不限于,一个或多个处理器、系统存储器以及耦合各种系统组件的系统总线。而且,计算环境可以包括可由各种组件访问的各种计算机可读介质,且包括易失性和非易失性介质、可移动和不可移动介质。
此处可以在诸如由一台或多台计算机或其它设备执行的程序模块等的计算机可执行指令的通用语境中描述各种模块和技术。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们用于执行特定任务或实现特定抽象数据类型。一般而言,程序模块的功能在各个实施例中可以按照所期望的方式结合或分布。
这些模块和技术的实现可以被储存在某一形式的计算机可读介质上或通过该介质传输。计算机可读介质可以是能够由计算机访问的任何可用介质。作为示例,而非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其它介质。
“通信介质”通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据。通信介质也包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。仅作为非限制性的示例,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。以上任一的组合也应包括在计算机可读介质的范围之内。
贯穿本说明书的对“一个实施例”、“实施例”或“示例实施例”的引用意味着具体描述的特性、结构或特征被包含在本发明的至少一个实施例中。因此,这样的短语的使用可以指的是多于仅一个实施例。而且,所述特性、结构或特征可以在一个或多个实施例中以任何合适方式结合。
然而,相关领域的技术人员可以认识到,可以无需一个或多个具体细节或也可使用其它方法、资源、材料等来实现本发明。在其它实例中,没有详细示出或描述公知的结构、资源或操作,仅仅是为了避免模糊本发明的各方面。
尽管示出和描述了本发明的示例实施例和应用,但是可以理解,本发明不限于以上所述的精确配置和资源。可以对此处所揭示的本发明的方法和系统的安排、操作和细节进行对本领域技术人员显而易见的各种修改、改变和变化,而不背离所要求保护的本发明的范围。

Claims (18)

1.一种方法,包括:
采样代码;
以良性的方式变形所述代码;
处理所述经变形的代码;以及
将所述代码的已知处理结果与所述经变形的代码的处理结果进行比较。
2.如权利要求1所述的方法,其特征在于,所述代码包括应用程序、程序、方法、函数和可执行代码的组合之一的至少一部分。
3.如权利要求1所述的方法,其特征在于,所述采样包括译码所述代码的句法特征和构造性质中的至少一个。
4.如权利要求1所述的方法,其特征在于,所述变形包括重写所述代码的至少一个底层构造,同时仍保留所述代码的上下文。
5.如权利要求1所述的方法,其特征在于,对所述代码的变形包括以下的至少其中之一:添加参数;扩展原语类型的宽度;重新排序参数;重新排序局部变量;添加局部变量;冗余使用外部变量;添加冗余循环;在控制流中缝合;展开常量;使用常量替换方法;引入假栈深度;折叠常量;卷起循环;引入公共子表达式;通过类型局部变量转换;以及将局部变量转换至另一存储空间。
6.如权利要求1所述的方法,其特征在于,所述变形是在受管执行环境中执行的。
7.如权利要求1所述的方法,其特征在于,所述处理包括编译所述代码。
8.一种含有一条或多条可执行指令的计算机可读介质,当读取所述可执行指令时,引起一个或多个处理器:
变形已知代码来产生经变形的代码;以及
测试所述变形是否为良性。
9.如权利要求8所述的计算机可读介质,其特征在于,所述变形已知代码的一条或多条指令引起所述一个或多个处理器在句法上和结构上的至少其中之一来重写所述已知代码的至少一部分。
10.如权利要求8所述的计算机可读介质,其特征在于,所述变形已知代码的一条或多条指令引起所述一个或多个处理器对所述已知代码进行以下的至少其中之一:添加参数;扩展原语类型的宽度;重新排序参数;重新排序局部变量;添加局部变量;冗余使用外部变量;添加冗余循环;在控制流中缝合;展开常量;使用常量替换方法;引入假栈深度;折叠常量;卷起循环;引入公共子表达式;通过类型局部变量转换;以及将局部变量转换至另一存储空间。
11.如权利要求8所述的计算机可读介质,其特征在于,所述测试变形是否为良性的一条或多条指令包括:
编译所述经变形的代码;
将编译所述经变形代码的结果与编译所述已知代码的已知结果进行比较。
12.如权利要求8所述的计算机可读介质,其特征在于,所述测试变形是否为良性的一条或多条指令包括,确定处理所述经变形的代码和所述已知代码的目标对象是否会产生相同的结果。
13.如权利要求8所述的计算机可读介质,其特征在于,所述一个或多个处理器在受管的执行环境中执行所述一条或多条指令。
14.一种系统,包括:
采样输入代码的底层控制结构的采样器;
重写至少一个所述底层控制结构的变形器;
验证所述变形器是否以良性的方式重写了所述底层控制结构的对象。
15.如权利要求14所述的系统,其特征在于,所述输入代码包括应用程序、程序、方法、函数和可执行代码的组合之一的至少一部分。
16.如权利要求14所述的系统,其特征在于,所述采样器用于允许标识输入代码中可以在句法上和结构上的至少其中之一重写,同时仍保留所述输入代码的原有上下文的一部分。
17.如权利要求14所述的系统,其特征在于,所述变形器用于句法上变换所述输入代码,同时仍保留所述输入代码的原有上下文。
18.如权利要求14所述的系统,其特征在于,所述变形器用于结构上变换所述输入代码,而不影响对所述输入代码的处理结果。
CN2006100043233A 2005-02-24 2006-01-24 代码变形 Expired - Fee Related CN1825277B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/064,865 US8020152B2 (en) 2005-02-24 2005-02-24 Code morphing
US11/064,865 2005-02-24

Publications (2)

Publication Number Publication Date
CN1825277A true CN1825277A (zh) 2006-08-30
CN1825277B CN1825277B (zh) 2012-10-10

Family

ID=36693571

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100043233A Expired - Fee Related CN1825277B (zh) 2005-02-24 2006-01-24 代码变形

Country Status (5)

Country Link
US (1) US8020152B2 (zh)
EP (1) EP1696316B1 (zh)
JP (1) JP2006236327A (zh)
KR (1) KR101219874B1 (zh)
CN (1) CN1825277B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2806768C (en) * 2010-07-29 2018-07-03 Irdeto Canada Corporation System and method for efficiently deploying massively diverse program instances to resist differential attacks
US8683452B1 (en) * 2010-12-21 2014-03-25 Emc Corporation Dynamically obfuscated javascript
US10459717B2 (en) * 2013-08-07 2019-10-29 Sap Se Observing evolution of software development artifacts
CN105677318A (zh) * 2015-12-28 2016-06-15 心动网络股份有限公司 一种防止游戏被内存修改器修改的方法
US10248545B2 (en) * 2016-02-17 2019-04-02 Parasoft Corporation Method for tracking high-level source attribution of generated assembly language code
US11200151B1 (en) 2021-03-12 2021-12-14 Sas Institute Inc. Graphical user interface and debugger system for selecting and testing alterations to source code for software applications

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
WO1998059292A1 (en) * 1997-06-25 1998-12-30 Transmeta Corporation Improved microprocessor
US5903761A (en) * 1997-10-31 1999-05-11 Preemptive Solutions, Inc. Method of reducing the number of instructions in a program code sequence
US7089541B2 (en) * 2001-11-30 2006-08-08 Sun Microsystems, Inc. Modular parser architecture with mini parsers
US20030145190A1 (en) * 2001-12-07 2003-07-31 Paolo Faraboschi Compiler algorithm to implement speculative stores
EP1347373A3 (en) 2002-03-20 2005-02-02 Seiko Epson Corporation Apparatus for processing instructions of different instruction set architectures
US7228426B2 (en) * 2002-04-03 2007-06-05 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US20040172637A1 (en) * 2003-02-28 2004-09-02 Sap Ag Code morphing manager
US7669188B2 (en) * 2004-12-03 2010-02-23 Palo Alto Research Center Incorporated System and method for identifying viable refactorings of program code using a comprehensive test suite

Also Published As

Publication number Publication date
KR20060094457A (ko) 2006-08-29
KR101219874B1 (ko) 2013-01-09
US20060190937A1 (en) 2006-08-24
EP1696316B1 (en) 2019-08-07
JP2006236327A (ja) 2006-09-07
EP1696316A2 (en) 2006-08-30
EP1696316A3 (en) 2006-10-04
US8020152B2 (en) 2011-09-13
CN1825277B (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
US7975257B2 (en) Iterative static and dynamic software analysis
CN101361058B (zh) 经定性化注释的代码
US10108406B2 (en) Linking optimized entry points for local-use-only function pointers
US10606574B2 (en) Executing optimized local entry points and function call sites
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
US10209972B2 (en) Executing optimized local entry points
US20030055809A1 (en) Methods, systems, and articles of manufacture for efficient log record access
US20180113687A1 (en) Comparisons in Function Pointer Localization
CN1825277A (zh) 代码变形
US20180113691A1 (en) Compiling Optimized Entry Points for Local-Use-Only Function Pointers
CN111221572B (zh) 一种自动适配运行环境的方法、装置、介质和设备
CN109154908B (zh) 具有精确垃圾收集报告的动态大小的局部
US20180364995A1 (en) Loading Optimized Local Entry Points for Local-Use-Only Function Pointers
US20070240120A1 (en) Adaptive Compiled Code
CN111767076A (zh) 代码重构方法及装置
CN1825852A (zh) 使用有目标的变量输入来测试数据格式的系统和方法
CN1853167A (zh) 具有可扩展预配置的动态内容处理的系统和方法
EP3005087A1 (en) Declarative configuration elements
CN1821963A (zh) 随机码生成
CN104932900A (zh) 容器进程控件的构建方法及装置
CN116795867A (zh) 数据处理方法、装置、电子设备和介质
CN117271301A (zh) 测试方法、装置、电子设备和介质
CN116467010A (zh) 插件调用宿主资源的方法和装置、处理器和电子设备
CN115292254A (zh) 文件存储方法及装置、介质、电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121010

Termination date: 20200124