【技术实现步骤摘要】
一种基于代码变形的二进制代码混淆方法
本专利技术属于计算机软件安全领域,特别是一种针对Windows系统中目标二进制代码的代码混淆方法。
技术介绍
软件的广泛应用为社会带来巨大利益的同时,其安全问题也日益突出,软件防恶意逆向成为工业界和学术界急需解决的问题。软件攻击技术和逆向工具的发展为软件的逆向分析提供了便利;另外,软件往往运行于“白盒攻击”环境中(参见参考文献1),软件攻击者可以完全控制软件的执行过程,查看指令执行序列。因此,只要给定攻击者足够的时间,应该能够成功逆向分析该软件。人在一定时间内处理的信息量是有限的,如果攻击者付出的代价超过所获得的信息的价值或分析过程的难度和复杂度导致攻击者放弃攻击,则采用的保护方法是有效的。因此软件保护的目的是提高攻击者逆向分析的难度,增加攻击者的攻击开销。针对二进制代码的保护不受编程语言的限制,相比源代码级别应用范围更广。目前二进制代码保护技术主要有:①指令伪装技术,(参见参考文献2、3)由Kanzaki提出,大量的伪装代码在执行过程中被还原,增加动态分析的复杂度。2010年他对指令伪装技术进行了改进(参见参考文献4),结合代码块执行时间判定程序是否被调试或攻击,提高了程序反调试能力。Madou提出了基于代码变形的软件动态保护方法(参见参考文献5),抽取程序中相似的代码集成束,在程序执行过程中,通过Script依次还原束中的代码块。针对代码伪装技术,Wu和Dux(参见参考文献6、7)出了有效的攻击方法,降低了指令伪装技术的安全性。②控制流混淆技术,Birrer提出了基于程序切片的变形保护方法(参见参考文献8),基于动 ...
【技术保护点】
一种基于代码变形的二进制代码混淆方法,其特征在于,按下列步骤进行:步骤1,确定变形模板库;步骤2,PE文件检测;步骤3,定位关键代码段;步骤4,对关键代码段进行反汇编得到汇编指令序列,并识别该段代码中的循环结构,计算关键代码段中各条指令的权重;步骤5,对汇编指令序列中所有汇编指令的变形;步骤6,对汇编指令序列切片和乱序:步骤7,将步骤6生成的新的汇编指令序列进行汇编,转换成二进制代码;步骤8,PE文件重构。
【技术特征摘要】
1.一种基于代码变形的二进制代码混淆方法,其特征在于,按下列步骤进行:步骤1,确定变形模板库;步骤2,PE文件检测;步骤3,定位关键代码段;步骤4,对关键代码段进行反汇编得到汇编指令序列,并识别该段代码中的循环结构,计算关键代码段中各条指令的权重;步骤5,对汇编指令序列中所有汇编指令的变形;步骤6,对汇编指令序列切片和乱序:步骤7,将步骤6生成的新的汇编指令序列进行汇编,转换成二进制代码;步骤8,PE文件重构;所述步骤4的具体步骤如下:(1)在待变形文件中找到关键代码段;(2)将关键代码段的二进制代码进行反汇编得到汇编指令,并按照汇编指令的地址,顺序地组成一个汇编指令序列,记为ins_list;(3)从指令序列ins_list中找出跳转指令及跳转指令的目的指令,如果目的指令的地址小于其对应的跳转指令,说明目的指令与其对应的跳转指令构成一个循环结构;以循环深度值表示循环结构中指令的嵌套深度,且规定位于最外层循环之外的指令的循环深度值为1,循环结构每增加一层嵌套,位于该层循环中的指令的循环深度值加1;得到的循环深度值序列;并统计循环深度值为x的指令的总数numx,并计算循环深度值为x的指令在指令序列的所有指令中的权重值weight(x),计算过程如下:当指令序列中所有指令的循环深度值都相等时,否则,式中,w为调节因子。2.如权利要求1所述的基于代码变形的二进制代码混淆方法,其特征在于,所述步骤3的定位关键代码段是指在待变形可执行文件中的关键代码段加上首标记和尾标记。3.如权利要求1所述的基于代码变形的二进制代码混淆方法,其特征在于,所述步骤(3)中,w取值为[0,1.5]。4.如权利要求1所述的基于代码变形的二进制代码混淆方法,其特征在于,所述步骤5的具体步骤如下:(1)取汇编指令序列ins_list中的第一条汇编指令作为当前指令,记为ins;(2)计算当前指令ins的变形次数阈值Ite;(3)对当前指令ins进行Ite次迭代等价变形,得到与当前指令ins等价的指令序列INS,然后使用指令序列INS替换汇编指令序列ins_list中的当前指令ins;(4)判断当前指令ins是否是指令序列ins_list中的最后一条,如果是,则汇编指令序列ins_list的等价变形结束,得到变形后得到的指令序列ins_list;否则,将当前指令ins更新为它的下一条指令,执行步骤(2)。5.如权利要求4所述的基于代码变形的二进制代码混淆方法,其特征在于,所述步骤(2)计算当前指令ins的变形次数阈值Ite,具体步骤如下:从循环深度值序列中查找当前指令ins的循环深度值,找到该循环深度值对应指令的权重值weight,使用下式计算当前指令ins的变形次数阈值Ite:Ite=[itemax-(itemax-itemin)×weight]式中,itemin和itemax分别是用户用于计算变形次数阈值而选定的两个参数,1≤itemin≤itemax≤10。6.如权利要求4所述的基于代码变形的二进制代码混淆方法,其特征在于,所述步骤(3)对当前指令ins进行Ite次迭代等价变形,得到与当前指令ins等价的指令序列INS,然后使用指令序列INS替换汇编指令序列ins_list中的当前指令ins,具体步骤如下:(3-1)、定义指...
【专利技术属性】
技术研发人员:王怀军,房鼎益,李光辉,张聪,许广莲,董浩,王瑾榕,党舒凡,王琳,姜河,何路,陈晓江,
申请(专利权)人:西北大学,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。