1.一种保护软件项目、从而混淆取决于是否满足条件而引起通过软件项目的一部分的控制流程中的变化的条件的方法,其中,条件的满足是基于一个或多个条件变量的评估,所述方法包括:
修改软件项目,使得通过所述部分的控制流程并不取决于是否满足条件;以及
在已修改软件项目的所述部分中向表达式中插入多个恒等变换,其中,定义并插入所述恒等变换使得,在不存在篡改的情况下,如果满足条件则所述恒等变换维持表达式的结果,并且使得如果不满足条件则所述恒等变换改变表达式的结果,其中,每个恒等变换直接地或间接地取决于所述一个或多个条件变量中的至少一个。
2.权利要求1的方法,还包括定义多个新变量。
3.权利要求2的方法,其中,被分配给新变量中的至少一个的值并不是直接地或间接地基于所述一个或多个条件变量中的任何。
4.权利要求2或权利要求3的方法,其中,被分配给新变量中的至少一个的值是恒定值。
5.权利要求2至4中的任一项的方法,其中,被分配给新变量中的至少一个的值是基于软件项目的程序变量,所述程序变量不同于所述一个或多个条件变量。
6.权利要求2至5中的任一项的方法,其中,被分配给新变量中的至少一个的值直接地或间接地基于所述一个或多个条件变量中的至少一个。
7.权利要求6的方法,其中,所述一个或多个条件变量中的每一个被直接地或间接地用来向新变量中的至少一个分配值。
8.权利要求7的方法,其中,至少一个恒等变换取决于新变量中的至少一个。
9.权利要求7或权利要求8的方法,还包括:
重新表达条件以产生新条件,所述新条件是基于新变量中的至少一个,其中,如果满足条件则满足新条件,并且其中,如果不满足条件则不满足新条件;以及
修改软件项目,使得控制流程的至少一部分取决于是否满足新条件。
10.权利要求6至9中的任一项的方法还包括修改软件项目的所述部分,使得所述一个或多个条件变量中的至少一个的至少一个实例被基于新变量中的至少一个的等价表达式替换。
11.权利要求2至10中的任一项的方法,还包括:
识别在其处给所述一个或多个条件变量中的至少一个分配随后被用来测试是否满足条件的值的软件项目中的码块;以及
在所述码块中向新变量中的至少某些分配值。
12.权利要求1至11中的任一项的方法,其中,软件项目包括IF-THEN语句,其包括包含条件的IF代码区段和被布置成响应于满足条件而被执行的THEN代码区段,并且其中,修改软件项目包括移除IF-THEN语句,使得已修改软件项目始终执行THEN代码区段,无论是否满足条件。
13.权利要求1至11中的任一项的方法,其中,软件项目包括IF-THEN-ELSE语句,其包括包含条件的IF代码区段、被布置成响应于满足条件而被执行的THEN代码区段和被布置成响应于不满足条件而被执行的ELSE代码区段,并且其中,修改软件项目包括移除IF-THEN-ELSE语句,使得已修改软件项目始终执行THEN代码区段,无论是否满足条件。
14.权利要求1至11中的任一项的方法,其中,软件项目包括IF-THEN-ELSE语句,其包括包含所述条件的逻辑补集的IF代码区段、被布置成响应于不满足条件而被执行的THEN代码区段和被布置成响应于满足条件而被执行的ELSE代码区段,并且其中,修改软件项目包括移除IF-THEN-ELSE语句,使得已修改软件项目始终执行ELSE代码区段,无论是否满足条件。
15.任何前述权利要求的方法,其中,恒等变换中的至少一个是乘法恒等变换,其在不存在篡改的情况下如果满足条件则计值为1,并且如果不满足条件则不计值为1,其中,可通过将表达式中的变量乘以乘法恒等变换来将所述乘法恒等变换插入到表达式中。
16.任何前述权利要求的方法,其中,恒等变换中的至少一个是加法恒等变换,其在不存在篡改的情况下如果满足条件则计值为0,并且如果不满足条件则不计值为0,其中,可通过将加法恒等变换与表达式中的变量相加来将所述加法恒等变换插入到表达式中。
17.任何前述权利要求的方法,还包括:
识别通过已修改软件项目的所述部分的所有控制流程路径;以及
针对每个已识别控制流程路径,将沿着该控制流程路径的变量的值考虑在内,从而识别该控制流程路径中的用于插入到表达式中的相应的恒等变换。
18.任何前述权利要求的方法还包括识别要混淆的软件项目中的条件。
19.任何前述权利要求的方法还包括在已修改软件项目的所述部分中的控制流程中插入分支点,从所述分支点采取的控制流程路径与是否满足条件无关。
20.任何前述权利要求的方法,其中,在已修改软件项目的所述部分之后,通过已修改软件项目的控制流程可取决于是否满足条件而改变。
21.一种保护软件项目的方法,所述方法包括步骤:
(a)使用任何前述权利要求的方法来保护软件项目从而混淆第一条件,所述第一条件取决于是否满足第一条件而引起通过软件项目的第一部分的控制流程中的变化;以及
(b)使用任何前述权利要求的方法来保护软件项目从而混淆第二条件,所述第二条件取决于是否满足第二条件而引起通过软件项目的第二部分的控制流程中的变化。
22.权利要求21的方法,其中,在软件项目的所述第一和第二部分之间存在至少部分的重叠。
23.权利要求21的方法,其中,第二条件是第一条件的逻辑补集。
24.一种产生计算机程序产品的方法,所述计算机程序产品包括通过实现权利要求1至23中的任一项的方法来保护软件项目并至少部分地基于已修改软件项目来生成计算机程序产品。
25.一种被布置成实现根据权利要求1至23中的任一项所述的方法的装置。
26.一种计算机程序,其在被处理器执行时引起处理器实现根据权利要求1至23中的任一项所述的方法。
27.一种存储根据权利要求26所述的计算机程序的计算机可读介质。
28.一种用于保护软件项目的装置,包括:
输入,用于接收要保护的软件项目,所述软件项目包括取决于是否满足条件而引起通过软件项目的一部分的控制流程中的变化的条件,其中,条件的满足是基于一个或多个条件变量的评估;
输出,用于输出受保护软件项目;以及
处理部件,用于通过以下各项从要保护的软件项目产生受保护软件项目:
修改软件项目,使得通过所述部分的控制流程并不取决于是否满足条件;以及
在已修改软件项目的所述部分中向表达式中插入多个恒等变换,其中,定义并插入所述恒等变换使得,在不存在篡改的情况下,如果满足条件则所述恒等变换维持表达式的结果,并且使得如果不满足条件则所述恒等变换改变表达式的结果,其中,每个恒等变换直接地或间接地取决于所述一个或多个条件变量中的至少一个。