防止软件逆向工程、未经授权修改以及运行时数据截取的方法技术

技术编号:2823301 阅读:739 留言:0更新日期:2012-04-11 18:40
一种用于防止对软件的未经授权的修改或对运行时数据的未经授权的修改的方法。根据该方法,提供能够将软件转换成一般化的机器代码的转换器。该转换器被设计成通过使用造成数据损失的转换处理使得它不能被逆向工程。还提供一种解释器,其处理方法的知识保持受限制。该解释器将一般化的机器代码解释成专门的机器代码,同时在解释过程中重新构造所损失的数据。

【技术实现步骤摘要】
【国外来华专利技术】 专利
本专利技术涉及计算机软件保护领域。更为具体地,本专利技术涉及保护计算机软 件免遭逆向工程、未经授权的修改以及运行时数据截取。
技术介绍
近年来已经作出了许多努力来保护原始计算机软件不被复制和大量散布。 现今所用的方法之一涉及要求在安装或运行时期间由用户手动输入许可证或 密钥序列。防止软件的重复使用的另一个流行的方法涉及安装后对软件的激 活。激活过程要求软件读取计算机中的硬件元件的ID序列号,例如处理器的 序列号或图形卡的序列号。 一旦硬件ID序列号被读取,它们就可与软件ID号 一起通过因特网发送给厂商。厂商存储ID号,并通过因特网将许可证代码发 送给程序。可以把软件编程为没有来自厂商的经验证的许可证代码就停止正常 的功能。在此情况下,如果软件被非法地复制并安装到一不同计算机上,由于 软件许可证已经与首次安装的硬件相关联,且许可证代码仅可被发送到具有与 厂商所存储的相同硬件配置文件的计算机,因此,软件不能被激活。然而,这 些方法不能防止未经授权的一方对软件代码进行逆向工程,修改软件代码来除 去这些软件保护工具,以及大量散布修改后的软件。现今有许多工具用于软件逆向工程,像hexadecimal dumper,它以十六进 制格式打印或显示软件代码的二进制数。通过了解代表这些指令的位模式以及 指令长度,想要对软件进行逆向工程的人就能够识别代码的某些部分来看它们 如何工作,然后对它们进行修改。用于逆向工程和代码修改的另一种常用工具 是反汇编程序。反汇编程序读取二进制代码,然后以文本格式显示每个可执行 指令。同样,由于反汇编程序不能告知可执行指令和代码所使用的数据之间的 差异,可使用调试器。调试器允许反汇编程序避免对代码的数据部分进行反汇 编。例如,如果反汇编程序读取到命令"ADD—INT8",表示"加接下去的8位所代表的数",调试器将该接下去的8位作为命令"ADD—INT8"的数据 部分来处理,下一组位被按照新的命令来处理。然而,这些工具依赖于以下公知常识指令代码是如何被构建的、信息位于存储器中的何处、哪些寄存器被使用、如何使用堆栈(用于存储需要被处理的请求的数据缓冲器,采用下推表 的形式)。当涉及基于解释器的编程语言时,与基于编译器的编程语言行程对比,逆 向工程以及由未经授权用户进行的修改的问题更为明显。基于编译器的编程语言的描述可见附图说明图1,图1 一般地示出了诸如C或Pascal之类的基于编译器的编 程语言的现有技术软件处理。当编程者使用编辑器等以高级语言编写程序时, 他的代码指令IO或源代码不能被计算机硬件直接读取。因此,源代码10必须 经过称为编译器11进行的编译的翻译处理。编译器11将源代码10编译成计 算机硬件能够读取并执行的专门的机器代码(MC) 12。由于MC 12被专门编 译到特定平台,因此,它不能从一个平台转移到另一个平台。在基于编译器的 编程语言中,对每个平台独立地编译源代码10,为每个平台产生不同的专门 MC 12。不同平台的例子可以是具有Windows XP和Mac OS X的基于Intel 的PC。基于解释器的编程语言的描述可见图2a,图2a是流程图, 一般地描述了 对诸如JAVA之类的基于解释器的编程语言的现有技术软件处理。类似于基于 编译器的编程语言,基于解释器的语言是使用编辑器等以高级语言编写的,下 文中称为源语句20。然而,根据该方法,编译器21将高级源语句20翻译成字 节代码(BC) 22,它是不限于特定平台的一般化的MC。然而,为了执行BC 22, 需要专门的解释器23来将BC 22翻译成专门的MC 24。专门的解释器23通常 与操作系统一起被安装。该方法的一个主要优点是可以对不同平台分发BC 22。 一旦在特定平台上执行BC 22,专门的解释器23 —次仅翻译一条BC 22指令, 为计算机硬件产生专门的MC24指令来执行。然而,由于解释器的处理方法是 公知的,因此,相当容易读取、理解和修改作为解释器23的指令集的BC22。 黑客可能购买到以BC编写的代码的合法版本,破译其指令并擦除或修改BC 的某些原始指令。 一旦BC被修改,它就可能被大量复制和转售。黑客使用的另一种方法在本领域中称为"运行时数据截取"。通过在解释5器对合法程序的执行期间截取并读取数据,黑客能够在执行非法程序时模拟该 过程。防止容易地理解和破译代码行为的 一 种方法使用代码加密,如US2004/0015710中所述。根据该方法,加密的代码与用于解密该代码的解密密 钥一起销售。代码中的每条指令首先被解密并由解释器解释供处理器执行。然 而, 一旦代码被解密,黑客就可能读取解密的代码来对原始代码进行逆向工程。 此外,解密过程可由用户监视来形成解密密钥。此外, 一旦代码被解密,它就 被无保护地加载到计算机的存储器中,并也可从中被复制。防止对软件代码的修改的另一种方法是将代码分割成两部分包括代码保 护的敏感部分和较不敏感部分。代码的较不敏感部分卖给用户,如以前那样准 备被解释,而代码的敏感部分存储在诸如智能卡之类的硬件产品上。对代码的 敏感部分的解释是在诸如智能卡读取器之类的硬件中进行的,在那里该部分不 能被监视或读取。然而,在某些情况下,该额外的硬件可能是昂贵的,并且由 供应商生成的代码更新的再分发是复杂的。用于防止对软件代码的修改的一种方法描述于Enriquillo Valdez和Moti Yung的"DISSECT: Distribution for SECurity Tool" (G丄Davida和Y.rankel (Eds.):ISC 2001, LNCS 2200,第125-143页,2001. Springer陽Verlag Berlin Heidelberg 2001)中。该方法建议将代码分割成两部分敏感部分和较不敏感 部分。代码的较不敏感部分被卖给用户,如以前那样准备好被解释,而代码的 敏感部分存储在安全服务器上。代码的敏感部分的解释是在安全服务器上进行 的,在那里该部分不能被监视或读取。然而,该方法要求维持对指定服务器的 直接联系来执行代码。因此,本专利技术的一个目的是提供一种用于防止软件逆向工程、未经授权的 修改以及运行时数据截取的廉价方法。本专利技术的另一个目的是提供一种无需额外的硬件就能防止对软件的未经 授权的修改的方法。本专利技术的又一个目的是提供一种方法, 一方面它防止未经授权的用户进行 的任何修改,另一方面它允许厂商进行修改和更新。本专利技术的其它目的和优点将随着说明的继续而变得明显。专利技术概述本专利技术针对一种用于防止对软件的未经授权的修改和对运行时数据的未 经授权的修改的方法。提供了一种能够使用造成数据损失的转换处理将软件转换成不能被逆向工程的一般化的机器代码的转换器、以及可由CLR编译的解释 器。解释器的处理方法的知识保持受限制。 一般的机器代码由解释器解释到专 门的机器中。软件可以是诸如基于解释器的语言等高级语言(如JAVA、 Visual J#、 J#、 C弁或VB.NET,或基于编译器的语言,如0++、 VB或Pascal),并可被划分使 得仅软件的一部分被转换器转换并被解释器解释。转换期间的数据损失可以是代码结构元数据的去除,或是到相应操作数是 在运行时确定的其它指本文档来自技高网...

【技术保护点】
一种用于防止对软件的未经授权的修改或对运行时数据的未经授权的修改的方法,包括以下步骤:    a.提供一转换器,所述转换器能够通过使用造成数据损失的转换处理将所述软件转换成不能被逆向工程的一般化的机器代码;    b.提供一解释器,所述解释器的处理方法的知识保持受限制;    c.由所述解释器将所述一般化的机器代码解释成专门的机器代码,同时在所述解释过程中重新构造所损失的数据。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:K艾斯波夫B艾斯波夫
申请(专利权)人:安全尺度有限公司
类型:发明
国别省市:IL[以色列]

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

1