发明名称 一种基于代码变形的二进制代码混淆方法
摘要 本发明公开了一种基于代码变形的二进制代码混淆方法,按下列步骤进行:步骤1,确定变形模板库;步骤2,PE文件检测;步骤3,定位关键代码段;步骤4,对关键代码段进行反汇编得到汇编指令序列,并识别该段代码中的循环结构,计算关键代码段中各条指令的权重;步骤5,对汇编指令序列中所有汇编指令的变形;步骤6,对汇编指令序列切片和乱序;步骤7,将步骤6生成的新的汇编指令序列进行汇编,转换成二进制代码;步骤8,PE文件重构。该方法利用计算机系统,对windows系统下的可执行二进制代码文件进行混淆,保护强度高、易于扩展。
申请公布号 CN103778355B 申请公布日期 2017.02.15
申请号 CN201410018508.4 申请日期 2014.01.15
申请人 西北大学 发明人 王怀军;房鼎益;李光辉;张聪;许广莲;董浩;王瑾榕;党舒凡;王琳;姜河;何路;陈晓江
分类号 G06F21/14(2013.01)I 主分类号 G06F21/14(2013.01)I
代理机构 西安恒泰知识产权代理事务所 61216 代理人 林兵
主权项 一种基于代码变形的二进制代码混淆方法,其特征在于,按下列步骤进行:步骤1,确定变形模板库;步骤2,PE文件检测;步骤3,定位关键代码段;步骤4,对关键代码段进行反汇编得到汇编指令序列,并识别该段代码中的循环结构,计算关键代码段中各条指令的权重;步骤5,对汇编指令序列中所有汇编指令的变形;步骤6,对汇编指令序列切片和乱序:步骤7,将步骤6生成的新的汇编指令序列进行汇编,转换成二进制代码;步骤8,PE文件重构;所述步骤4的具体步骤如下:(1)在待变形文件中找到关键代码段;(2)将关键代码段的二进制代码进行反汇编得到汇编指令,并按照汇编指令的地址,顺序地组成一个汇编指令序列,记为ins_list;(3)从指令序列ins_list中找出跳转指令及跳转指令的目的指令,如果目的指令的地址小于其对应的跳转指令,说明目的指令与其对应的跳转指令构成一个循环结构;以循环深度值表示循环结构中指令的嵌套深度,且规定位于最外层循环之外的指令的循环深度值为1,循环结构每增加一层嵌套,位于该层循环中的指令的循环深度值加1;得到的循环深度值序列;并统计循环深度值为x的指令的总数num<sub>x</sub>,并计算循环深度值为x的指令在指令序列的所有指令中的权重值weight(x),计算过程如下:当指令序列中所有指令的循环深度值都相等时,<img file="FDA0001110946680000021.GIF" wi="365" he="127" />否则,<img file="FDA0001110946680000022.GIF" wi="1902" he="254" />式中,w为调节因子。
地址 710069 陕西省西安市太白北路229号