保护软件安全的方法及装置的制作方法

文档序号:6337376阅读:124来源:国知局
专利名称:保护软件安全的方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,特别涉及一种保护软件安全的方法及装置。
背景技术
黑客和木马病毒编写者通过跟踪调试软件,会对软件的安全造成威胁。以证 券交易软件为例,通过对证券软件进行跟踪调试,可能分析出关键的数据加密流程和软 件保护流程,从而制作出专门针对这些加密流程和保密流程的升级版恶意代码程序,盗 取用户口令,并非法截获用户的交易信息,从而给证券交易软件的安全性带来极大威 胁。因此需要通过反跟踪技术保护软件的安全,现有常见的反跟踪技术标志寄存器反单 步调试(Anti-Single St印)、修改中断入口 (Modify Interrupt Entry)、反断点跟踪 (Anti-Breakpoint)、调试器检测(Debug Detection)等。发明人在对现有技术的研究过程中发现,现有常用的反跟踪技术需要修改运行软 件的操作系统的底层机制,因为调试过程是操作系统结合硬件中断实现的一套内部机制, 为了能对程序进行有效的调试,现有的反跟踪技术需要干扰操作系统的机制。以反断点跟 踪技术为例,当有断点发生时,原来应该进入调试器的流程,被干扰后就进入了挂接后函 数,因此干扰了正常的操作系统机制,必须对操作系统的底层机制进行修改。由此可知,现 有的反跟踪技术的软件兼容性差,过于依赖软硬件环境,特别应用在证券交易软件时,难以 满足其安全需要。

发明内容
本发明实施例的目的在于提供一种保护软件安全的方法及装置,以解决现有反跟 踪技术兼容性差且依赖软硬件环境,导致难以保护软件安全性的问题。为解决上述技术问题,本发明实施例提供如下技术方案一种保护软件安全的方法,包括对输入的源文件进行编译生成中间文件;对所述中间文件进行预处理得到所述中间文件的程序信息,以及生成混淆策略;根据所述混淆策略对所述中间文件进行混淆处理;当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处理后的中间文件进 行连接处理,并输出连接处理后的目标文件。所述中间文件包括符号表、控制流程和汇编指令。所述对中间文件进行预处理包括对所述中间文件进行流程分析、数据流分析和 数据依存度分析。还包括保存预先设置的混淆参数,所述混淆参数包括混淆强度和混淆弹性。所述生成混淆策略包括根据需要获取不同的混淆强度和混淆弹性;
将获取的混淆强度和混淆弹性进行组合得到所述混淆策略。所述根据所述混淆策略对所述中间文件进行混淆处理包括根据所述混淆策略对所述中间文件进行遍历;在所述中间文件中插入无用代码,插入无用代码后的所述中间文件的执行效果与 所述源文件一致。还包括预先对混淆处理的性能进行评估获得评估指标,所述评估指标包括混淆处理的强 度、混淆处理的弹性和混淆处理的开销。一种保护软件安全性的装置,包括编译单元,用于对输入的源文件进行编译生成中间文件;预处理单元,用于对所述中间文件进行预处理得到所述中间文件的程序信息;生成单元,用于生成混淆策略;混淆单元,用于根据所述混淆策略对所述中间文件进行混淆处理;连接单元,用于当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处理 后的中间文件进行连接处理;输出单元,用于输出连接处理后的目标文件。还包括保存单元,用于保存预先设置的混淆参数,所述混淆参数包括混淆强度和混淆弹 性。所述生成单元包括混淆参数获取单元,用于根据需要获取不同的混淆强度和混淆弹性;混淆参数组合单元,用于将获取的混淆强度和混淆弹性进行组合得到所述混淆策 略。所述混淆单元包括文件遍历单元,用于根据所述混淆策略对所述中间文件进行遍历;代码插入单元,用于在所述中间文件中插入无用代码,插入无用代码后的所述中 间文件的执行效果与所述源文件一致。还包括预估单元,用于预先对混淆处理的性能进行评估获得评估指标,所述评估指标包 括混淆处理的强度、混淆处理的弹性和混淆处理的开销。由以上本发明实施例提供的技术方案可见,本申请实施例中对输入的源文件进行 编译生成中间文件,对中间文件进行预处理得到中间文件的程序信息,以及生成混淆策略, 根据混淆策略中间文件进行混淆处理,当混淆处理的结果达到预设的混淆评估指标时,对 混淆处理后的中间文件进行连接处理,并输出连接处理后的目标文件。本申请实施例通过 代码混淆技术进行反跟踪,以海量的无用信息来混淆真实信息,增加了跟踪者的跟踪工作 量和复杂度,从而达到无法分析出所要保护软件的代码原理的目的,提高了软件的安全性。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而 言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请保护软件安全的方法的第一实施例流程;图2为本申请保护软件安全的方法的第二实施例流程;图3为本申请保护软件安全的装置的第一实施例框图;图4为本申请保护软件安全的装置的第二实施例框图。
具体实施例方式在如下本发明的多个实施例中,有些实施例提供了一种保护软件安全的方法,有 些实施例提供了一种保护软件安全的装置。为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实 施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方 案作进一步详细的说明。本申请实施例在对软件进行保护时,采用了代码混淆技术,该技术以海量的无用 信息来混淆真实信息,从而使软件跟踪者无法分析出软件源代码,从而保证软件安全性。参见图1,为本申请保护软件安全的方法的第一实施例流程图步骤101 对输入的源文件进行编译生成中间文件。其中,中间文件包括符号表、控制流程和汇编指令。步骤102 对中间文件进行预处理得到中间文件的程序信息,以及生成混淆策略。其中,对中间文件进行预处理包括对所述中间文件进行流程分析、数据流分析和 数据依存度分析。其中,混淆策略可以根据预先设置的混淆参数生成,混淆参数可以包括混淆强度 和混淆弹性。具体的,根据需要获取不同的混淆强度和混淆弹性,将获取的混淆强度和混淆 弹性进行组合得到所述混淆策略。步骤103 根据混淆策略对所述中间文件进行混淆处理。根据所述混淆策略对所述中间文件进行遍历,在所述中间文件中插入无用代码, 插入无用代码后的所述中间文件的执行效果与所述源文件一致。步骤104 当混淆处理的结果达到预设的混淆评估指标时,对混淆处理后的中间 文件进行连接处理。步骤105 输出连接处理后的目标文件。本申请实施例在保护软件安全时,主要是对软件的关键代码进行混淆。关键代码 在没有混淆前,跟踪者的跟踪工作量和复杂度都不高,因此可以在较短的时间内分析出软 件的关键流程和加密算法;但在经过本申请实施例的代码混淆以后,因为在源代码中增加 了海量的混淆信息,因此跟踪者难以从中获取真正的代码信息,从而无法分析出关键流程。 但是CPU处理器对于混淆后的软件代码却依旧可以正确执行,只是在执行效率上产生微小 的性能损耗。参见图2,为本申请保护软件安全的方法的第二实施例流程图步骤201 预先对混淆处理的性能进行评估获得评估指标,评估指标包括混淆处 理的强度、混淆处理的弹性和混淆处理的开销。
对代码进行混淆的技术是一种特殊的编译技术,它将源程序P转换成目标程序 0(p)。O(P)与P相比具有相同的外部行为,但是代码的安全性能更强。对混淆处理的要求 可以描述为设T是从源程序P到目标程序0⑵的一个变换,如果P和0⑵具有相同的可观 测行为,并且满足以下两个条件①如果P无法中止或者以错误的状态中止,则O(P)可以中 止,也可以不中止;②否则O(P)必须中止,并且产生和P相同的输出结果。则称T为一个从 P到O(P)的混淆变换。在进行混淆处理之前,需要其性能进行评估,评估指标分别代表了算法为程序增 加的复杂度(即混淆处理的强度),算法抗机器攻击的能力(即混淆处理的弹性),以及 由于对代码转换而带来的额外开销(即混淆处理的开销)。具体来说,混淆处理的强度 (Potency)指标表示混淆处理为程序所增加的复杂度,程序主要有7类属性决定它的复杂 程度,分别是程序长度,谓词个数,分支与循环的层次,引用的个数,方法参数的个数,继承 树深度;混淆处理的弹性(Resilience)表征混淆处理抵抗攻击的能力,它由2个部分组成, 一部分是攻击者为了攻克混淆处理,设计并实现一个相应反混淆器所需花费的时间以及人 力,另一部分是反混淆器对混淆处理进行反混淆所花费的开销;混淆处理的开销(Cost)说 明混淆处理给程序带来的额外开销,它包括有两个方面,一个是在对程序混淆时所花费的 开销,另一个是混淆后的程序相对于原程序执行时所增加的时间复杂度以及空间复杂度, 通常要求混淆后的程序执行时的绝对延迟不超过3毫秒。步骤202 保存预先设置的混淆参数,混淆参数包括混淆强度和混淆弹性。混淆参数表不需要每次编译的时候都进行设定,针对特定的软件源代码只需要设
置一次即可。混淆参数可以包括混淆强度和混淆弹性。混淆强度是指混淆执行的迭代次数, 通过加大混淆强度可以增大跟踪者在跟踪程序时的复杂程度,从而起到保护程序的目的; 混淆弹性是指为了避免跟踪者识破混淆代码的模式,混淆器对需要的花指令进行随机性选 择,通过不同花指令的随机组合以防止跟踪者识别出混淆的模式而制作出反混淆器,其中 花指令(junk code)是由程序设计者特别构思,希望使反汇编的时候出错,让破解者无法清 楚正确地反汇编出程序内容。步骤203 对输入的源文件进行编译生成中间文件。源文件指包含了源代码的软件程序,源文件可以采用不同的语言进行编写,例如 C++, JAVA 等。以C++源文件为例,源文件中包含的程序代码经过编译器的编译生成中间文件 (例如,*. obj文件),编译过程包括对源程序代码的词法和语法进行分析处理。编译生成的中间文件包括符号表、控制流程和汇编指令。该中间文件所包含的内 容与源文件一样都是用来描述程序逻辑的,只是表达方式从原来可读性较高的C++源代码 转变为相对可读性差的机器语言。步骤204 对中间文件进行预处理得到中间文件的程序信息。对中间文件进行预处理包括对中间文件进行流程分析、数据流分析和数据依存度 分析。步骤205 根据需要获取不同的混淆强度和混淆弹性。
本申请实施例中的混淆策略通过预先保存的混淆参数获得,混淆参数可以不限于 本申请实施例中列举的混淆强度和混淆弹性。步骤206 将获取的混淆强度和混淆弹性进行组合得到混淆策略。根据混淆参数种类的不同,可以根据需要进行组合,从而配置出各种强度和不同 花指令的组合,由此使对中间文件的每次混淆都有不同的结果,从而进一步保证软件安全 性。步骤207 根据混淆策略对中间文件进行遍历。步骤208 在中间文件中插入无用代码,插入无用代码后的中间文件的执行效果
与源文件一致。本申请实施例在对中间文件进行混淆处理时,可以设置一个由一系列混淆算法和 逻辑处理组成混淆引擎,该混淆引擎可以根据混淆策略的要求,对中间文件进行遍历处理, 在中间文件的机器语言内部插入海量的无用代码,但是要保证插入无用代码后的程序在执 行效果上与源程序在宏观上一致。混淆引擎输出的文件类型与混淆前输入的中间文件的类
型一致。步骤209 当混淆处理的结果达到预设的混淆评估指标时,对混淆处理后的中间 文件进行连接处理。当混淆处理的结果达到预设的混淆处理的强度、混淆处理的弹性和混淆处理的开 销等评估指标时,可以通过连接器并将混淆后的中间文件进行连接处理,确定最终的函数 地址,跳转地址等信息。步骤210 输出连接处理后的目标文件。上述本申请实施例可以特别应用在使用证券软件的环境下,通过对证券软件进行 混淆,增加第三人对证券软件进行跟踪调试的难度,保护了证券软件交易信息及用户口令 的安全性。与本发明一种保护软件安全的方法的实施例相对应,本发明还提供了一种保护软 件安全的装置的实施例。参见图3,为本申请保护软件安全的装置的第一实施例框图该装置包括编译单元310、预处理单元320、生成单元330、混淆单元340、连接单 元350和输出单元360。其中,编译单元310,用于对输入的源文件进行编译生成中间文件;预处理单元320,用于对所述中间文件进行预处理得到所述中间文件的程序信 息;生成单元330,用于生成混淆策略;混淆单元340,用于根据所述混淆策略对所述中间文件进行混淆处理;连接单元350,用于当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处 理后的中间文件进行连接处理;输出单元360,用于输出连接处理后的目标文件。参见图4,为本申请保护软件安全的装置的第二实施例框图该装置包括预估单元410、保存单元420、编译单元430、预处理单元440、生成单 元450、混淆单元460、连接单元470和输出单元480。
预估单元410,用于预先对所述混淆处理的性能进行评估获得评估指标,所述评估 指标包括混淆处理的强度、混淆处理的弹性和混淆处理的开销。保存单元420,用于保存预先设置的混淆参数,所述混淆参数包括混淆强度和混淆 弹性。编译单元430,用于对输入的源文件进行编译生成中间文件;预处理单元440,用于对所述中间文件进行预处理得到所述中间文件的程序信 息;生成单元450,用于生成混淆策略;混淆单元460,用于根据所述混淆策略对所述中间文件进行混淆处理;连接单元470,用于当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处 理后的中间文件进行连接处理;输出单元480,用于输出连接处理后的目标文件。具体的,生成单元450可以包括(图4中未示出)混淆参数获取单元,用于根据 需要获取不同的混淆强度和混淆弹性;混淆参数组合单元,用于将获取的混淆强度和混淆 弹性进行组合得到所述混淆策略。具体的,混淆单元460可以包括(图4中未示出)文件遍历单元,用于根据所述 混淆策略对所述中间文件进行遍历;代码插入单元,用于在所述中间文件中插入无用代码, 插入无用代码后的所述中间文件的执行效果与所述源文件一致。通过以上的实施方式的描述可知,本申请实施例中对输入的源文件进行编译生成 中间文件,对中间文件进行预处理得到中间文件的程序信息,以及生成混淆策略,根据混淆 策略中间文件进行混淆处理,当混淆处理的结果达到预设的混淆评估指标时,对混淆处理 后的中间文件进行连接处理,并输出连接处理后的目标文件。本申请实施例通过代码混淆 技术进行反跟踪,以海量的无用信息来混淆真实信息,增加了跟踪者的跟踪工作量和复杂 度,从而达到无法分析出所要保护软件的代码原理的目的,提高了软件的安全性。本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需 的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者 说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存 储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以 是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分 所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部 分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实 施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例 的部分说明即可。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明 的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种保护软件安全的方法,其特征在于,包括对输入的源文件进行编译生成中间文件;对所述中间文件进行预处理得到所述中间文件的程序信息,以及生成混淆策略;根据所述混淆策略对所述中间文件进行混淆处理;当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处理后的中间文件进行连接处理,并输出连接处理后的目标文件。
2.根据权利要求1所述的方法,其特征在于,所述中间文件包括符号表、控制流程和 汇编指令。
3.根据权利要求1所述的方法,其特征在于,所述对中间文件进行预处理包括对所述 中间文件进行流程分析、数据流分析和数据依存度分析。
4.根据权利要求1所述的方法,其特征在于,还包括保存预先设置的混淆参数,所述混淆参数包括混淆强度和混淆弹性。
5.根据权利要求4所述的方法,其特征在于,所述生成混淆策略包括 根据需要获取不同的混淆强度和混淆弹性;将获取的混淆强度和混淆弹性进行组合得到所述混淆策略。
6.根据权利要求1所述的方法,其特征在于,所述根据所述混淆策略对所述中间文件 进行混淆处理包括根据所述混淆策略对所述中间文件进行遍历;在所述中间文件中插入无用代码,插入无用代码后的所述中间文件的执行效果与所述 源文件一致。
7.根据权利要求1所述的方法,其特征在于,还包括预先对混淆处理的性能进行评估获得评估指标,所述评估指标包括混淆处理的强度、 混淆处理的弹性和混淆处理的开销。
8.一种保护软件安全性的装置,其特征在于,包括 编译单元,用于对输入的源文件进行编译生成中间文件;预处理单元,用于对所述中间文件进行预处理得到所述中间文件的程序信息; 生成单元,用于生成混淆策略;混淆单元,用于根据所述混淆策略对所述中间文件进行混淆处理; 连接单元,用于当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处理后的 中间文件进行连接处理;输出单元,用于输出连接处理后的目标文件。
9.根据权利要求8所述的装置,其特征在于,还包括保存单元,用于保存预先设置的混淆参数,所述混淆参数包括混淆强度和混淆弹性。
10.根据权利要求9所述的装置,其特征在于,所述生成单元包括 混淆参数获取单元,用于根据需要获取不同的混淆强度和混淆弹性;混淆参数组合单元,用于将获取的混淆强度和混淆弹性进行组合得到所述混淆策略。
11.根据权利要求8所述的装置,其特征在于,所述混淆单元包括 文件遍历单元,用于根据所述混淆策略对所述中间文件进行遍历;代码插入单元,用于在所述中间文件中插入无用代码,插入无用代码后的所述中间文件的执行效果与所述源文件一致。
12.根据权利要求8所述的装置,其特征在于,还包括预估单元,用于预先对混淆处理的性能进行评估获得评估指标,所述评估指标包括混 淆处理的强度、混淆处理的弹性和混淆处理的开销。
全文摘要
本发明实施例公开了一种保护软件安全的方法及装置,所述方法包括对输入的源文件进行编译生成中间文件;对所述中间文件进行预处理得到所述中间文件的程序信息,以及生成混淆策略;根据所述混淆策略对所述中间文件进行混淆处理;当所述混淆处理的结果达到预设的混淆评估指标时,对混淆处理后的中间文件进行连接处理,并输出连接处理后的目标文件。本申请实施例通过代码混淆技术进行反跟踪,以海量的无用信息来混淆真实信息,增加了跟踪者的跟踪工作量和复杂度,从而达到无法分析出所要保护软件的代码原理的目的,提高了软件的安全性。
文档编号G06F21/00GK101986326SQ201010568449
公开日2011年3月16日 申请日期2010年12月1日 优先权日2010年12月1日
发明者于浩淼, 张宇博, 易峥, 王进 申请人:浙江核新同花顺网络信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1