[发明专利]一种基于控制流和外形混淆的Python代码混淆方法有效

专利信息
申请号: 201611123380.3 申请日: 2016-12-08
公开(公告)号: CN106778101B 公开(公告)日: 2019-05-14
发明(设计)人: 顾乃杰;王岩;陈悟;王小强 申请(专利权)人: 合肥康捷信息科技有限公司
主分类号: G06F21/14 分类号: G06F21/14
代理公司: 安徽省合肥新安专利代理有限责任公司 34101 代理人: 陆丽莉;何梅生
地址: 230000 安徽省合肥市望江西路和创新大*** 国省代码: 安徽;34
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 控制 外形 混淆 python 代码 方法
【权利要求书】:

1.一种基于控制流和外形混淆的Python代码混淆方法,其特征是按如下步骤进行:

步骤1、以一个函数的开始与结束为单位,将Python代码中所有函数进行划分,得到若干个单独的函数;

步骤2、针对任意一个单独的函数fun,对其函数体中若干个连续执行的代码进行分割,得到若干个基本块并依次进行编号,记为B={b1,b2,…,bi,…,bn};bi表示第i个基本块;所述第i个基本块bi中的代码只有一个入口和一个出口;1≤i≤n;

步骤3、使用基于分段Logistic混沌映射的密钥生成算法,生成两套密钥;

步骤3.1、利用式(1)所示的分段Logistic混沌映射产生第i个实数ai,从而得到随机实数序列A={a1,a2,…,ai,…,an}:

式(1)中,a0=rand(0,1);u表示Logistic参数;

步骤3.2、利用式(2)所示的映射函数将第i个实数ai映射成第i个整数Fi,从而将所述实数序列A={a1,a2,…,ai,…,an}映射成整数序列F={F1,F2,…,Fi,…,Fn}:

Fi=Round{ai×m} (2)

式(2)中,Round{}是取整函数;m表示映射参数;

步骤3.3、统计所述整数序列F中互不相同的元素个数,记为t;t∈[1,n];

步骤3.4、由所述步骤3.1~步骤3.3的处理过程构成函数Logistic的函数体;由实数a0和Logistic参数u构成二元组(a0,u)作为第t个基本块bt的密钥keyt

步骤3.5、重复步骤3.1~步骤3.4,直到获得所有基本块的密钥作为第一套KEY={key1,key2,…,keyt,…,keyn};

步骤3.6、重复步骤3.1~步骤3.4,直到获得所有基本块的密钥作为第二套KEY′={key′1,key′2,…,key′t,…,key′n};

步骤4、基于控制流的混淆

步骤4.1、打乱所述函数fun中所有基本块的顺序,得到B′={b′1,b′2,…,b′i,…,b′n};b′i表示打乱后的第i个基本块;

步骤4.2、以所述第一套密钥KEY作为所述函数Logistic的参数;经过函数Logistic的函数体计算,得到下一个需要执行的基本块的编号;

以所述第二套密钥KEY′为作为所述函数Logistic的参数;经过函数Logistic的函数体计算,得到if-else控制语句中的条件变量,从而使用while循环语句和if-else控制语句对打乱后的所有基本块的顺序进行控制,使得打乱后的所有基本块的执行顺序与原来的执行顺序相同;

步骤5、基于外形的混淆

利用无意义的字符串对所述Python代码中局部的类名、函数名、变量名进行替换,从而形成混淆后的Python代码。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥康捷信息科技有限公司,未经合肥康捷信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201611123380.3/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top