代码扰乱以及通过仿真来控制处理器制造技术

技术编号:2848425 阅读:279 留言:0更新日期:2012-04-11 18:40
通过相应的键(32)随机地选择各个安全程序(28),然后将其与游戏程序(20)封装在一起以提供要应用于例如光盘(30)的存储介质的可执行程序文件(34)。每当运行安全程序(28)时,它产生的目标代码是扰乱的,以使得难以通过识别和除去安全程序来克服该保护。通过用变量函数来代替源代码中的变量来产生扰乱的目标代码。当编译该源代码以产生目标代码时,该函数使变量作为一系列操作而存在于编译的目标代码中。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及产生扰乱的目标代码的方法、以目标代码形式的可执行程序、产生其上具有安全的可执行程序的存储介质的方法、以及其上具有安全的可执行程序的存储介质。本专利技术还涉及控制处理器运行程序的方法。
技术介绍
通常,这个专利技术涉及软件安全性。众所周知,软件可以是有价值的,并且,有人和组织试图绕过用来保护软件的任何安全措施。以诸如C和Fortran的高级语言编写程序。然后将它们编译成为目标代码,其可为机器语言,或者可被转换成机器语言。例如编译器的设备可以用来进行从源代码到目标代码的变换(translation)。机器语言是二进制数字流,其将包括用于可执行程序的指令,但是还可以包括各种安全部件,例如,用来确保仅可运行程序的真正副本。破解者(cracker)试图获得清楚的代码,以便他们可以绕过任何安全部件,并且,例如,由于可得到将从二进制流产生源代码的反向编译器,所以,他们会在这方面获得帮助。已经建议了填充目标代码,即增加冗余的附加代码来隐藏或扰乱(obfuscate)起作用的(functional)目标代码,但是,已经证实破解者熟练于识别和除去填充。还已建议了加密目标代码。然而,当运行程序时需要能够得到加密密钥,以便可以解密指令。显然,一旦破解者找到了密钥,便提供了对未加密的代码的访问。
技术实现思路
本专利技术试图提供使软件安全的新的且改进的方法。依据本专利技术的第一方面,提供了一种产生扰乱的目标代码的方法,该方法包括以下步骤用变量的选定函数代替源代码中的变量;以及编译该源代码,以产生目标代码,该选定函数使变量作为一系列操作而存在于编译后的目标代码中。因为将变量编译成一系列操作,所以增加了目标代码的大小,并且这本身就起到隐藏或扰乱有用的代码的作用。然而,提供一系列操作来呈现一个变量与填充代码相比具有这样的优势,即全部产生的代码看起来都是有用的,从而使破解者更难以确定他们需要哪些目标代码。在优选实施例中,利用其呈现变量的一系列操作由算术和/或逻辑操作组成,并且这一系列操作被布置为当运行目标代码时提供该变量。另外和/或作为选择,利用其呈现变量的一系列操作包含求补操作,其被布置为当目标代码运行时提供该变量。在这方面,目标代码的长度大大地增加了,并且由此通过例如将变量呈现为一系列算术或其它操作,来扰乱目标代码。在实施例中,在源代码的模板中定义选定函数。例如,源代码的模板定义了多个函数,所述多个函数各自被布置为进行编译,以将变量呈现为一系列操作,并且该方法还包含选择函数之一来代替源代码中的变量。优选地,不同的键与模板中的每个函数相关联,并且该方法还包含用该模板来代替源代码中的变量,并且通过选择与模板中的一个函数相关联的键来选择所述一个函数。提供多个函数、其中每个都可被选择来代替变量,这允许以多种不同的方法来编译特定变量。这对于其中一个源产生许多不同的软件应用是非常有帮助的。例如,CD的制造商将生产具有不同的标题和内容的CD,但是将保持格式和安全措施在所有标题上都是共用的。在许多现有技术的安全性解决方案中,破解者只需破解在一个标题上的保护,就能够通过重复所进行的动作来破解全部标题。如上面所定义的,提供多个函数,允许为每个不同的标题、为相同的变量而选择不同的函数。因此,如果破解者的确设法访问了一个CD标题的内容,则也对破解者访问另一个CD标题的内容的努力没有帮助。此外,使用键方法来选择函数允许使软件安全的处理的某些自动化。在实施例中,源代码涉及存储的数组和模板,并使用指针来定位这些数组和模板。优选地,源代码是标准的编程语言。例如,源代码是C++。本专利技术还扩展到以目标代码形式的可执行程序,该程序已从源代码编译,其中,源代码中的变量已被编译为作为一系列操作而存在于目标代码中,借此扰乱目标代码。利用其呈现变量的一系列操作可以由算术和/或逻辑操作组成,并且这一系列操作被布置为当运行目标代码时提供该变量。另外和/或作为选择,利用其呈现变量的一系列操作可以包含求补操作,其被布置为当目标代码运行时提供该变量。被布置为当运行目标代码时提供该变量的一系列操作的使用允许目标代码的指令、或从目标代码中转换的指令运行程序,而不需要解密、或者解释扰乱的目标代码。在实施例中,已通过用选定函数代替源代码中的变量而产生了一系列操作,该选定函数被布置为使变量作为一系列操作而存在于编译后的目标代码中。例如,在源代码的模板中定义了选定函数。优选地,源代码的模板已定义了多个函数,每个函数都被布置为进行编译,以将变量呈现为一系列操作,并且已经选择了函数之一来代替源代码中的变量。依据本专利技术的进一步方面,提供了一种产生其上具有安全的可执行程序的存储介质的方法,该方法包括以下步骤通过将可执行程序与被布置为控制对可执行程序的访问的安全程序相关联,来使该可执行程序安全;以及将安全的可执行程序应用于存储介质。并且,该方法还包含扰乱该安全程序的目标代码,其中,已经通过用变量的选定函数代替源代码中的变量、并编译该源代码以产生目标代码,来扰乱该安全程序的目标代码,该选定函数使变量作为一系列操作而存在于已编译的目标代码中。在实施例中,利用其呈现变量的一系列操作由算术和/或逻辑操作组成,并且其中该系列的操作被布置为当运行目标代码时提供该变量。另外和/或作为选择,利用其呈现变量的一系列操作包含求补操作,其被布置为当目标代码运行时提供该变量。优选地,可执行程序和安全程序在目标代码级别上相关联。提供控制对可执行程序的访问的安全程序可以是任何适当的安全程序。例如,安全程序可以被布置为加密该可执行程序,和/或可以把可执行程序中的块移入安全程序中,和/或安全程序可以被布置为需要验证程序的运行。在实施例中,在源代码的模板中定义在安全程序的源代码中的选定函数。例如,所述安全程序源代码的模板定义了多个函数,每个函数都被布置为进行编译,以将变量呈现为一系列操作,并且,该方法还包含选择函数之一来代替源代码中的变量。优选地,不同的键与模板中的每一个函数相关联,并且该方法还包含用该模板来代替源代码中的变量,并且,通过选择与一个函数相关联的键来选择模板中的所述一个函数。在实施例中,安全程序的源代码涉及存储的数组和模板,并使用指针来定位这些数组和模板。安全程序的源代码优选为标准编程语言,如C++。优选地,其上应用了安全的可执行程序的存储介质是光盘,并且,例如,安全的可执行程序通过激光束编码而应用于光盘上。作为选择,其上应用了安全的可执行程序的存储介质是服务器、计算机和/或其它处理部件中的存储器或者与这些部件相关联的存储器。例如,存储介质可以是计算机中、或者连接到计算机的硬盘。本专利技术还扩展到其上具有安全的可执行程序的存储介质,其中通过让安全程序与其相关联来使可执行程序安全,该安全程序被布置为控制对可执行程序的访问,并且,其中,安全程序处于已被扰乱的目标代码中,该安全程序已经从源代码编译,并且,安全程序的源代码中的变量已被编译为作为一系列操作而存在于目标代码中,借此已扰乱了目标代码。例如,利用其呈现变量的一系列操作由算术和/或逻辑操作组成,并且其中,该系列的操作被布置为当运行目标代码时提供该变量。另外和/或作为选择,利用其呈现变量的一系列操作包含求补操作,其被布置为当目标代码运行时提供该变量。在实施例中,已通过用被布置本文档来自技高网...

【技术保护点】
一种产生扰乱的目标代码的方法,该方法包括以下步骤:用变量的选定函数代替源代码中的变量;以及编译该源代码以产生目标代码,该选定函数使变量作为一系列操作而存在于编译的目标代码中。

【技术特征摘要】
【国外来华专利技术】GB 2003-8-20 0319596.31.一种产生扰乱的目标代码的方法,该方法包括以下步骤用变量的选定函数代替源代码中的变量;以及编译该源代码以产生目标代码,该选定函数使变量作为一系列操作而存在于编译的目标代码中。2.如权利要求1所述的方法,其中,利用其呈现变量的操作系列由算术和/或逻辑操作组成,并且其中该操作系列被布置为当运行目标代码时提供该变量。3.如权利要求1或者2所述的方法,其中,利用其呈现变量的操作系列包含求补操作,其被布置为当目标代码运行时提供该变量。4.如任一先前权利要求所述的方法,其中,在源代码的模板中定义选定函数。5.如权利要求4所述的方法,其中,该源代码的模板定义多个函数,其中,每个函数都被布置为进行编译,以将变量呈现为一系列操作,并且该方法还包含选择函数之一来代替源代码中的变量。6.如权利要求5所述的方法,其中,不同的键与模板中的每一个函数相关联,并且该方法还包含用该模板来代替源代码中的变量,并且通过选择与模板中的一个函数相关联的键来选择所述一个函数。7.如任一先前权利要求所述的方法,其中,源代码涉及存储数组和模板,并使用指针来定位这些数组和模板。8.如任一先前权利要求所述的方法,其中,源代码是标准的编程语言。9.如权利要求8所述的方法,其中,源代码是C++。10.一种以目标代码形式的可执行程序,该程序已经从源代码中编译,其中在源代码中的变量已被编译为作为一系列目标代码而存在于目标代码中,以借此扰乱目标代码。11.如权利要求10所述的可执行程序,其中,利用其呈现变量的操作系列由算术和/或逻辑操作组成,并且,其中该操作系列被布置为当运行目标代码时提供该变量。12.如权利要求10或权利要求11所述的可执行程序,其中,利用其呈现变量的操作系列包含求补操作,其被布置为当目标代码运行时提供该变量。13.如权利要求10到12中的任何一个所述的可执行程序,其中已通过用选定函数代替源代码中的变量而产生了一系列操作,其中该选定函数被布置为使变量作为一系列操作而存在于编译后的目标代码中。14.如权利要求13所述的可执行程序,其中,在源代码的模板中定义了选定函数。15.如权利要求14所述的可执行程序,其中,源代码的模板已定义了多个函数,每个函数都被布置为进行编译,以将变量呈现为一系列操作,并且已经选择了所述函数之一来代替源代码中的变量。16.一种产生其上具有安全的可执行程序的存储介质的方法,该方法包括以下步骤通过将可执行程序与被布置为控制对可执行程序的访问的安全程序相关联,来使该可执行程序安全;以及将安全的可执行程序应用于该存储介质,并且,该方法还包含扰乱该安全程序的目标代码,其中已经通过用变量的选定函数代替源代码中的该变量、并编译该源代码以产生目标代码,来扰乱该安全程序的目标代码,该选定函数使变量作为一系列操作而存在于已编译的目标代码中。17.如权利要求16所述的产生其上具有安全的可执行程序的存储介质的方法,其中,利用其呈现变量的操作系列由算术和/或逻辑操作组成,并且其中该操作系列被布置为当运行目标代码时提供该变量。18.如权利要求16或权利要求17所述的产生其上具有安全的可执行程序的存储介质的方法,其中,利用其呈现变量的操作系列包含求补操作,其被布置为当目标代码运行时提供该变量。19.如权利要求16到18中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,可执行程序和安全程序在目标代码级别上相关联。20.如权利要求16到19中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,该安全程序被布置为加密该可执行程序。21.如权利要求16到20中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,还包含将可执行程序中的块移出该可执行程序,并在安全程序中重定位这些块。22.如权利要求16到21中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,该安全程序被布置为需要验证程序的运行。23.如权利要求16到22中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,在源代码的模板中定义在安全程序源代码中的选定函数。24.如权利要求23所述的产生其上具有安全的可执行程序的存储介质的方法,其中,安全程序源代码的所述模板定义多个函数,每个函数都被布置为进行编译,以将变量呈现为一系列操作,该方法还包含选择所述函数之一来代替源代码中的变量。25.如权利要求24所述的产生其上具有安全的可执行程序的存储介质的方法,其中,不同的键与模板中的每一个函数相关联,并且该方法还包含用该模板来代替源代码中的变量,并且,通过选择与模板中的一个函数相关联的键来选择所述一个函数。26.如权利要求16到25中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,安全程序的源代码涉及存储的数组和模板,并使用指针来定位这些数组和模板。27.如权利要求16到26中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,安全程序的源代码是标准编程语言。28.如权利要求27所述的产生其上具有安全的可执行程序的存储介质的方法,其中,源代码是C++。29.如权利要求16到28中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,其上应用了安全的可执行程序的存储介质是光盘。30.如权利要求29所述的产生其上具有安全的可执行程序的存储介质的方法,其中,通过激光束编码将安全的可执行程序应用于光盘上。31.如权利要求16到28中的任何一个所述的产生其上具有安全的可执行程序的存储介质的方法,其中,其上应用了安全的可执行程序的存储介质是服务器、计算机和/或其它处理部件中的存储器、或与这些部件相关联的存储器。32.一种其上具有安全的可执行程序的存储介质,其中,通过将安全程序与其相关联来使可执行程序安全,该安全程序被布置为控制对可执行程序的访问,并且其中,安全程序处于已被扰乱的目标代码的形式,该安全程序已被从源代码编译,并且,安全程序的源代码中的变量已被编译为作为一系列操作而存在于目标代码中,借此已扰乱了目标代码。33.如权利要求32所述的其上具有安全的可执行程序的存储介质,其中,利用其呈现变量的操作系列由...

【专利技术属性】
技术研发人员:艾伦W斯蒂门斯马丁C格雷克里斯托弗E萨利
申请(专利权)人:麦克罗维西恩欧洲公司
类型:发明
国别省市:GB[英国]

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

1