[发明专利]混淆技术无效
申请号: | 201010140024.9 | 申请日: | 2010-03-24 |
公开(公告)号: | CN101847194A | 公开(公告)日: | 2010-09-29 |
发明(设计)人: | B·辛格;N·萨克塞纳;V·S·S·拉维纳德;R·S·肖汉 | 申请(专利权)人: | 安全网络公司 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 北京金信立方知识产权代理有限公司 11225 | 代理人: | 黄威 |
地址: | 美国马*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 混淆 技术 | ||
技术领域
本发明涉及阻止、预防或检测计算机代码的反向工程或“剽窃”。
背景技术
已知一些人试图在没有计算机程序设计者或所有者的许可的情况下分析或改变计算机程序的功能。计算机程序的改变可用作分析工具,或用于使程序产生程序设计者不想要的真实世界结果的目的。
已提出多种措施包括“混淆”来阻止反向工程,其通常涉及包括无功能的、不必要的、或不合逻辑地放置的代码,该代码使分析员在不访问初始程序设计者的文献的情况下更难理解代码怎样运行。
在任何反向工程尝试中,大量计算机代码的重要部分是“条件分支”或“条件跳转”,根据一些可变因素或其它事件,在前述点代码的运行可采取不同的路线。基于条件的结果,条件分支可导致跳转到程序的不同部分。更普遍地,条件分支通过如果符合指定条件则跳转的命令形成。之后,有如果不符个条件则继续条件跳转命令后面的命令的隐含命令。总的来说,在本说明书中,选择在一个分支上跳转还是两个分支上跳转及如果只有一个跳转而选择哪一分支跳转均无关紧要,术语“条件跳转”和“条件分支”在所有三种情况下均可无区别地使用。
反向工程师通常能容易地在编译的程序二进制代码中认出条件跳转语句。使用现在广泛可用的调试程序可容易地定位和分析条件语句。之后,反向工程师可使条件跳转无效,使得程序总是沿同一随后的路线而行,因而使其运行更容易理解。恶意的黑客可改变条件跳转,使得随后的运行路线不正确地遵照可变因素或其它事件。例如,其可能撤消安全性或完整性测试,或导致正常输入产生异常输出。传统的混淆不能防止反向工程师识别二进制代码中的条件跳转命令。
发明内容
本发明公开了在运行程序的计算机中进行条件跳转的方法及其计算机程序,包括:在计算机中提供真实条件分支以其为条件的输入。在计算机中提供混淆性不可预见的数据。在计算机程序中,运行代码以产生以不可预见的数据为条件的混淆性分支。在计算机程序中由混淆性条件分支确定的点处,进行以前面提及的输入为条件的真实分支。总的来说,“真实条件分支”为与程序的真实目的有关的任何条件分支。
在实施例中,可重复混淆性条件分支,使得程序沿分支树结构工作。在计算机程序中的通过连续混淆性条件分支的累积效应从真实条件分支的几种可用情形中选择的点即树杈处进行真实条件分支。
在实施例中,不可预见的数据选择矩阵的一行,及混淆性条件分支由所选行中的项确定。
在实施例中,真实条件分支可使程序进行到程序中随进行真实条件分支的情形而定的点,之后,可选地,通过进一步混淆,程序可进行到独立于进行真实条件分支情形的点。在一例子中,不同的真实条件分支情形可向程序发送不同的目的地序列,之后程序可通过该序列重复,在独立点结束。在另一例子中,在真实条件分支之后,可以有另外的不可预见的选择,例如,程序可将另外的混淆性代码重复不可预见的次数。
在实施例中,其它计算机程序代码可包括在混淆性条件分支和真实条件分支之间,或真实条件分支之后的混淆性代码之中。在有两个或两个以上连续混淆性条件分支时,其它程序代码可在第一混淆性条件分支之后的任何点处。其它程序代码可以是不起作用的混淆。如果其被运行,其可以是无意义的混淆,或者其可以是来自与真实条件分支的主题不紧密相关的程序部分的不调和代码,或者其可以是在混淆性条件分支中复制的相关代码。尤其在后者情况下,其它代码可能是黑客希望改变的代码。之后,如果黑客未完全理解混淆结构,黑客仅可改变其它代码的一份或一些副本,则其在进一步的剽窃中可被阻止,因为有时运行改变后的代码及有时运行未被改变的代码。
在实施例中,前述其它计算机程序代码的运行可在不同的混淆性条件分支选择之后试图检测其它程序代码的运行之间的差异时进行监视。例如,如果黑客试图改变其它程序代码,在没有认识到全部混淆结构的情况下,黑客可改变通过混淆树的一路径上的其它程序代码,但不能改变另一路径上的其它程序代码,使得通过树的相继重复导致明显不同的结果。
在实施例中,输入可从同一程序的另一部分提供,例如作为计算的结果。作为备选,输入可从程序外面发送或取回。
在实施例中,不可预见的数据可在程序内通过从不可预见的数据源调用而提供。例如,该源可以是随机或伪随机数发生器。作为备选,不可预见的数据可以是来自同一或另一计算机程序的无关部分的数据或结果。由于目标是进行混淆,不调和的链路有利。
附图说明
上述及其它方面、特征和优点从下面结合附图进行的详细描述将更明显看出,其中:
图1为计算机网络的示意图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安全网络公司,未经安全网络公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010140024.9/2.html,转载请声明来源钻瓜专利网。