[发明专利]一种基于控制流和外形混淆的Python代码混淆方法有效
申请号: | 201611123380.3 | 申请日: | 2016-12-08 |
公开(公告)号: | CN106778101B | 公开(公告)日: | 2019-05-14 |
发明(设计)人: | 顾乃杰;王岩;陈悟;王小强 | 申请(专利权)人: | 合肥康捷信息科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230000 安徽省合肥市望江西路和创新大*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 控制 外形 混淆 python 代码 方法 | ||
本发明公开了一种基于控制流和外形混淆的Python代码混淆方法,包括:将Python代码以函数为单位将每个函数中的代码分割成相应的基本块;对函数中的基本块进行编号;使用基于分段Logistic混沌映射的密钥生成算法,生成两套与前面的编号对应的密钥;打乱函数中基本块的顺序,并使用控制语句进行控制,封装控制基本块执行顺序的控制变量,使用两套密钥作为生成下一步需要执行的基本块的编号和if语句中的条件变量;对之前进行控制流混淆后的代码进行外形混淆,将其替换成无意义的字符串。本发明能保护使用Python语言开发的软件的知识产权。
技术领域
本发明涉及一种程序混淆方法,具体地说是一种基于控制流和外形混淆的Python代码混淆方法。
背景技术
软件代码的安全保护是计算机安全领域的一个重点研究内容。随着互联网的飞速发展和大数据时代的到来,分布式计算环境在给人们带来更强的计算能力和更大的灵活性的同时,也使软件代码不可避免的地运行在不可信的节点上,从而使软件代码面临更加严峻的安全问题。相对于攻击者并不知晓攻击对象内部情况的黑盒子攻击,这种暴露软件代码,通过逆向分析代码的运行,并对代码进行恶意篡改或盗取的安全攻击成为白盒子攻击。目前白盒子攻击的威胁正在快速上升和不断演化。软件代码混淆技术是近十年来发展起来的一种软件白盒子安全保护技术。
Python语言现在变得越来越流行,它是一种面向对象、解释型计算机程序设计语言。Python语法简洁而清晰,具有丰富和强大的类库,常被昵称为胶水语言,它能够把其他语言制作的各种模板(尤其是C/C++)很轻松地联结在一起。
现阶段,由于Python语言的方便性,大量应用开始采用Python语言来实现。但是现在存在很多开源的反编译工具,可以直接将使用Python语言开发的程序模块(pyc、pyo)反编译为Python源代码,导致程序中的核心代码被攻击者窃取或篡改,使得开发者很难保护其代码的知识产权。
发明内容
针对现有使用Python语言开发的程序在安全防护方面所存在的问题,本发明提供一种基于控制流和外形混淆的Python代码混淆方法,以期能在保证语义上不发生改变,也不影响程序的正常执行的条件下,通过控制流混淆和外形混淆的手段,使得混淆后的Python源代码在被反编译成源代码之后难以阅读和理解,以达到保护原创代码的目的。
为达到上述发明目的,本发明采用如下技术方案:
本发明一种基于控制流和外形混淆的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.569946…≤u≤4;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥康捷信息科技有限公司,未经合肥康捷信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611123380.3/2.html,转载请声明来源钻瓜专利网。