用于防逆向工程和/或篡改程序的方法、系统以及设备技术方案

技术编号:10959001 阅读:68 留言:0更新日期:2015-01-28 11:18
计算机程序的未授权使用通过编译处理器而不是仅仅将程序编译成机器代码而变得困难。处理器应该以其对机器指令(即其转换数据)做出响应的方式根据作为输入的任意位串B和程序P被计算。处理器的转换数据被计算,所述处理器在所述处理器将给定位串B用作机器指令的源时将执行由所述程序P所定义的操作。处理器被配置为使得它将根据所述转换数据执行机器指令。其他程序P’然后可以被编译成针对该处理器并且由所述处理器执行的机器指令B’。在没有所述位串B和所述原始程序P的知识的情况下,难以修改机器指令B’使得不同的处理器将执行其他程序P’。

【技术实现步骤摘要】
【国外来华专利技术】用于防逆向工程和/或篡改程序的方法、系统以及设备
本专利技术涉及一种提供支持防逆向工程和/或篡改程序的计算机程序的执行的方法,并且涉及一种用于执行程序的设备和系统。
技术介绍
现今互联网提供对数字内容的方便且无所不在的访问。由于参与设备(例如,PC平台)的开放性,互联网作为用于敏感内容的分发媒介的使用对确保内容提供商的利益产生强迫挑战。特别地,对于诸如PC或安卓(Android)操作系统之类的平台,必须假定用户完全控制提供对内容和无限数量的时间与资源的访问以攻击和绕过任何内容保护机制的硬件和软件。对于应用的统一执行,互联网需要接收平台运行所谓的虚拟机(例如,JavaVM)。这些虚拟机提供开放的、统一的且文档齐全(well-documented)的执行环境。结果,互联网作为分发机制的弱点被放大,因为应用的逆向工程和篡改应用的预防是困难的。US2010/313188公开了一种用于防止软件的未授权修改的方法。根据这个方法,特殊的转换器将软件转换成仅适合于在“秘密虚拟机”(SVM)上执行的“秘密虚拟机语言”,对于所述秘密虚拟机来说其操作和存储器分配的方法未被公布。因为处理的SVM方法是未知的,所以黑客将发现难以理解和修改代码,或者难以尝试在运行时期间拦截数据。
技术实现思路
除了其它的之外,目的在于增强在开放环境中执行的应用对逆向工程和篡改攻击的保护。本专利技术由独立权利要求定义;从属权利要求定义有利的实施例。根据一个方面提供了配置处理器的方法,所述方法包括-接收位串和程序,-配置处理器使得当处理器相继将所述位串用作至少两个机器指令的源时处理器执行所述程序,其中处理器被配置成在处理器不将所述位串用作机器指令的源时不执行所述程序。以这种方式,将另外的程序未授权地用于经配置的处理器变得困难。攻击者将需要知道处理器如何被配置,这是困难的因为配置取决于用来配置处理器的程序,并且这个程序对于攻击者而言可能是未知的。所述方法可以用进行常规编译器所做的操作相反的操作的编译器来具体化:不是从较高级程序为给定(虚拟)处理器编译机器指令程序,而是编译器从机器指令程序和较高级程序编译(虚拟)处理器。这可以与从另外的较高级程序为经编译的(虚拟)处理器编译另外的程序的编译器组合。在优选实施例中,所述方法包括:相继将程序转换成至少两个参考机器指令,并且相继根据位串和所述至少两个参考机器指令来计算转换数据,以用于配置处理器使得当处理器将位串用作机器指令的源时经配置的处理器执行程序;以及配置处理器使得它将根据所述转换数据执行机器指令。转换数据可以包括定义从位串的一部分到机器指令的操作码的转换的数据,所述操作码诸如用于加、减、加载、存储以及跳转操作等的操作码。实现虚拟机的任何已知方法可以被用来配置处理器。例如,经配置的处理器的软件仿真可以使用例如因JAVA虚拟机仿真而所知的技术。并且参考指令可以是用于虚拟机的指令。作为其他示例,可以通过将数据加载到将机器指令转换成用于处理器的控制信号以使处理器施行操作的查找表中、或者通过将诸如可编程逻辑阵列之类的转换电路配置成施行该转换、或者通过制造具有带设计成根据转换数据来执行响应机器指令中对应的操作的逻辑电路结构的处理电路的集成电路、或者通过支持虚拟机的任何其他方式来配置处理器。可以通过配置的迭代应用进一步掩盖处理器的配置。在实施例中,所述方法包括将位串划分成连续部分以供由处理器用作相应的机器指令,以及确定用于在对应位置处相继将位串的连续部分转换成至少两个参考机器指令的转换。通过将位串划分成连续部分它们可以与系列中的相应的机器指令一对一配对。对于每对部分位串和机器指令,转换可以例如以查找表的形式或作为布尔函数的一部分被设计。尽管可能碰巧多个不同的位串需要被转换成相同的参考指令,但是这是不成问题的。转换数据可以简单地将多个不同的位串映射到相同的参考指令。可以以许多方式解决其中位串的两个或更多个部分是相同的而需要被映射到不同的参考指令上的相反情形。例如,一个人可以选择位串的连续部分以具有比参考机器指令的长度更大的长度。例如,所有参考机器指令可以是特定位数长的,然而位串的所有连续部分是某个较大位数长的。在每个附加位被分配给位串情况下冲突的机会降低了。作为用来解决冲突的第二方式,所述方法可以包括确定与子串在由处理器执行时的不同部分相对应的程序计数器值。例如,一个人可以模拟程序到参考处理器中的加载并且确定每个指令被加载所在的地址。与参考指令相对应的部分被确定为具有相同的程序计数器值。在确定从一部分到指令的转换数据之前,位串的各部分与从程序计数器值得到的信息组合,如此获得消歧部分。从消歧部分到参考机器指令的转换被完成。例如,一个人可以将程序计数器的一个或多个最低有效位级连到该部分。例如,一个人可以将程序计数器值打散成较少位并且将较少位附加到该部分。以更大转换数据为代价,将程序计数器值的足够多信息与各部分组合将在对各部分进行消歧时总是成功。可以在更小规模上确定转换,例如,转换数据将该部分的不同子部分转换成参考机器指令在参考机器程序中的对应位置处的操作码、操作数和/或结果代码。例如,可以针对操作码分别地做参考指令的一部分所需的转换,然后可以每操作码地做转换。可能碰巧位串中的各部分的数目短于程序中的参考指令的数目。这可以通过填补位串(即将具有值零的位插入到位串中)来解决;它还可以通过忽略这个部分的位串并且仅依靠程序计数器来解决。然而如果各部分的数目至少是参考指令的数目则是优选的。例如,在实施例中要求B中的位数至少和参考指令的数目一样大。有趣地,获得了在它接收位串并且根据转换数据应用转换时执行参考指令的处理器。而且,处理器仍然是可编程的并且能够执行任意程序。例如,所述方法可以包括确定没有在由转换数据所定义的转换下转换成参考机器指令的原型的参考机器指令,以及为没有不同于已经被定义在转换数据中的原型的原型的所述参考机器指令选择原型并且扩展转换数据以用于配置处理器,使得当处理器将所选原型用作机器指令的源时经配置的处理器执行所确定的参考机器指令。还可以使得转换数据对于用于采用所述转换数据而被配置的处理器的编译器可用。这允许采用该编译器编译另一程序,所述编译为该处理器产生编译的机器指令的程序,并且采用所述处理器执行编译的机器指令的程序。本专利技术的一个方面涉及用于配置处理器的设备,所述设备包括-用于接收位串和程序的接收器-配置处理器,其被配置成-相继将程序(P)转换成至少两个参考机器指令;并且-相继根据位串和所述至少两个参考机器指令来计算转换数据,以用于配置处理器使得当处理器相继将位串用作至少两个机器指令的源时经配置的处理器执行程序,而当所述处理器不将位串用作机器指令的源时处理器不执行程序,并且配置成-配置处理器使得它将根据所述转换数据执行机器指令。根据一个方面提供了配置处理器的方法,所述方法包括-提供位串B;-接收程序P;-计算在处理器将位串B用作机器指令的源时将执行由程序P所定义的操作的处理器的操作语义,所述操作语义根据作为输入的位串B和程序P被计算;-配置处理器使得它将根据所述操作语义执行机器指令。以这种方式,将其他处理器上的另外的程序未授权地用于经配置的处理器变得困难。攻击者将需要确定经配置的处理器的操作语义来这样做,如果被用来本文档来自技高网...

【技术保护点】
一种配置处理器(12)的方法,所述方法包括‑ 接收位串(B)和程序(P),‑ 配置处理器(12)使得当所述处理器将所述位串(B)用作机器指令的源时所述处理器(12)执行程序(P)。

【技术特征摘要】
【国外来华专利技术】2012.05.25 NL 20088881.一种配置处理器(12)的方法,所述方法包括-接收位串(B)和程序(P),-使用编译器(10)将程序(P)转换成用于参考执行电路的参考机器指令的系列,-将位串(B)划分成由处理器(12)用作相应的机器指令的连续部分,-将所述参考机器指令与在参考机器指令的系列中的对应位置处的位串(B)的各部分和与位串(B)分别相比较,并确定将所述位串(B)的各部分转换成在对应位置处的参考机器指令的转换数据,以及-利用所述转换数据配置处理器(12),处理器(12)的指令解码器(124)被配置为基于所述转换数据提供机器指令从位串(B)到参考机器指令的转换,使得当所述处理器(12)将所述位串(B)用作机器指令的源时所述处理器(12)执行程序(P)。2.根据权利要求1所述的方法,其中所述转换数据将所述位串(B)的多个不同部分映射到相同的参考指令,并且其中所述方法包括:-通过增加将被视为指令的所述位串(B)的各部分的长度,解决其中位串(B)的两个或更多个部分相同而需要来映射到不同参考指令上的多义性。3.根据权利要求1的方法,-其中所述转换数据将所述部分的不同子部分转换成所述参考机器指令在参考机器指令中的对应位置处的操作码、操作数以及结果代码中的至少一个。4.根据权利要求1的方法,其中所述转换数据包括用于查找位串(B)的各部分以获得参考机器指令的查找数据。5.根据权利要求1的方法,其中所述位串(B)的连续部分具有比参考机器指令的长度更大的长度。6.根据权利要求1的方法,包括-确定与所述位串(B)当由所述处理器(12)执行时的不同部分相对应的程序计数器值,-将所述位串(B)的各部分与从所述程序计数器值得到的信息组合,如此获得消歧部分,并且确定用于将所述消歧部分转换成所述参考机器指令的转换。7.根据权利要求1的方法,-确定没有在由所述转换数据所定义的所述转换下转换成所述参考机器指令的原始操作数码的参考机器指令,-为没有不同于已经被定义在所述转换数据中的所述原始操作数码的原始操作数码的所述参考机器指令选择原始操作数码并且扩展所述转换数据以用于配置所述处理器(12),使得当所述处理器将所选原始操作数码用作机器指令的源时经配置的处理器(12)执行所确定的参考机器指令。8.根据权利要求1的方法,包括-使所述转换数据对于用于采用所述转换数据而被配置的所述处理器的编译器可用,-采用所述编译器编译另一程序(P’),所述编译为所述处理器(12)产生编译的机器指令的程序;-采用所述处理器(12)执行编译的机器指令的程序。9.根据权利要求8的方法,其中所述程序(P)是可编...

【专利技术属性】
技术研发人员:WC马龙
申请(专利权)人:皇家飞利浦有限公司
类型:发明
国别省市:荷兰;NL

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

1