[发明专利]一种基于控制流复杂化的Java代码混淆方法有效
申请号: | 201610891258.4 | 申请日: | 2016-10-13 |
公开(公告)号: | CN106650339B | 公开(公告)日: | 2019-06-11 |
发明(设计)人: | 周超;郭雅娟;黄伟;朱道华;姜海涛;郭静;李斌;王黎明;陈锦铭 | 申请(专利权)人: | 国网江苏省电力公司电力科学研究院;国家电网公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 南京纵横知识产权代理有限公司 32224 | 代理人: | 董建林 |
地址: | 211103 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于控制流复杂化的Java代码混淆方法,包括步骤1,构建不透明谓词集合;步骤2,发现循环结构;步骤3,拆开循环结构;步骤4,在拆开的循环结构中插入不透明谓词集合;步骤5,复杂化循环结构。本发明克服了现有代码混淆方法对循环结构利用不足的缺点,实现了利用循环结构的控制流复杂化方法。 | ||
搜索关键词: | 一种 基于 控制 复杂化 java 代码 混淆 方法 | ||
【主权项】:
1.一种基于控制流复杂化的Java代码混淆方法,其特征在于:包括以下步骤,步骤1,构建不透明谓词集合;步骤2,发现循环结构;步骤3,拆开循环结构;步骤4,在拆开的循环结构中插入不透明谓词集合;步骤5,复杂化循环结构;复杂化循环结构的过程为,S41,定义循环结构的循环体为C0、C1、…、Ck;S42,定义i=0;S43,如果i小于等于k,则转至步骤S44,否则结束;S44,在循环体Ci中随机地添加与不透明谓词相关的代码,这些代码不改变不透明谓词的真假;S45,调用构造有向无环图的函数,得到DAG结构;DAG结构中的每一个节点都是循环体Ci中的一个位置,每一条有向边代表从起点所代表位置到终点所代表位置之间的代码段;S46,计算每一条有向边在DAG中的一个拓扑序TS;S47,将代码段按照拓扑序TS替换掉原本的循环体Ci;S48,寻找下一个代码段间的间隔;S49,如果间隔之前紧邻的代码段,在DAG结构中没有后续的代码段执行,转至步骤S410,否则转至步骤S411;S410, 插入跳转指令直接跳转到S47中替换掉的循环体Ci的结束位置,转至步骤S412;S411, 插入随即条件或者与输入相关的条件,跳转到在DAG结构中紧邻在这个代码段之后的代码段上;S412,判断是否还有代码段间的间隔没有插入跳转指令,如果是,转至步骤S48,否则转至步骤S423;S423,i+=1,转至步骤S43。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网江苏省电力公司电力科学研究院;国家电网公司,未经国网江苏省电力公司电力科学研究院;国家电网公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610891258.4/,转载请声明来源钻瓜专利网。