本发明涉及计算机应用领域,具体为一种提升python控制流混淆效率的哈希n态不透明谓词方法。
背景技术:
1、随着互联网信息技术和软件产业的快速发展,计算机和软件系统已经成为人们提供者便捷的服务,与此同时获取软件的渠道并使用软件也变更加容易。大量软件以可执行代码的形式分发,软件攻击者可以通过破解软件获取软件核心代码和重要数据信息,使得软件知识产权难以得到保障。
2、python是动态解释型语言,因为它具有简洁,约束少,含有大量类库,极大的加快了开发者的开发速度、使得python越来越受到欢迎和使用,目前python语言在tiobe流行程度排名中上升为第一名,而对python代码保护没有引起重视。
3、目前对python源代码进行保护的开源工具工具使用的主要是代码混淆技术,其中主流控制流混淆方法中通过分段logistic映射产生的不透明谓词方法存在如下问题:(1)降低保护效果的同时,混淆所需时间与混淆后程序额外开销时间都过大;(2)随着不透明谓词数量增多,混淆过程时间与额外开销时间呈现非线性增长。这些问题导致对于资源有限的、对身安全能力和需求也有限的情况下的python程序来说,通过混淆迭代最后进行处理所带来的额外时间开销远大于需求,效率低下。
技术实现思路
1、本发明的目的在于提供一种提升python控制流混淆效率的哈希n态不透明谓词方法,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明提供如下技术方案:一种提升python控制流混淆效率的哈希n态不透明谓词方法,包括以下步骤:
3、步骤s1:构造n态不透明谓词簇;
4、步骤s2:将不透明谓词簇转换为不透明谓词;
5、步骤s3:结合python语言性质插入不透明谓词,针对全局代码、分支循环和函数体内等对代码块进行压扁打乱,在跳转常量的部分,根据构造n态不透明谓词的算法输出谓词结果传入相应的密钥key,达到隐藏实际分支跳转值,进而隐藏控制流的实际路径。
6、具体的,步骤s1的具体步骤为:
7、步骤s11:通过random产生n个整数序列构成
8、步骤s12:确定映射函数fun参数a的值,利用映射fun产生具有n个整数的序列构成y={y1,y2,…,yn},此时密钥(m,a)为谓词。
9、具体的,步骤时s2的具体步骤为:
10、步骤s21:序列y与x之间存在关系fi(x*)→y,选择yi∈y,根据计算出result=i,使得fi(x*)=i,结果添加到result中,此时不透明谓词密钥(m,a,fun,x);
11、步骤s22:重复步骤s21步骤,构造出n态不透明谓词结果状态的集合
12、result={result=1,result=2,…,result=n},其中result=1表示谓词取值结果为1的密钥。key=(result=1,result=2,…,result=n,f),根据n态不透明谓词定义得p=e(key)。
13、与现有技术相比,本发明的有益效果是:
14、提出基于乘法散列的哈希n态不透明谓词hnopbmh,利用哈希的特性产生不透明谓词,将其用到扁平化控制流方法中,降低迭代次数过多带来的时间消耗,并且该算法在映射结果上仍具有混淆应用到不透明谓词上所具备的映射均匀和数值敏感的性质,达到满足混淆力度的同时降低额外开销时间,降低程序运行和混淆所需的时间,提升了效率。
1.一种提升python控制流混淆效率的哈希n态不透明谓词方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种提升python控制流混淆效率的哈希n态不透明谓词方法,其特征在于,步骤s1的具体步骤为:
3.根据权利要求1所述的一种提升python控制流混淆效率的哈希n态不透明谓词方法,其特征在于,步骤时s2的具体步骤为: