[发明专利]Solidity语言源代码混淆方法、系统、设备及存储介质在审
申请号: | 202210230894.8 | 申请日: | 2022-03-09 |
公开(公告)号: | CN114611074A | 公开(公告)日: | 2022-06-10 |
发明(设计)人: | 张鹏程;张勐;肖锋;吉顺慧;楚涵婷;余启凡 | 申请(专利权)人: | 河海大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 210024 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | solidity 语言 源代码 混淆 方法 系统 设备 存储 介质 | ||
1.一种Solidity语言源代码混淆方法,其特征在于,包括如下步骤:
步骤1:读取源代码,构建所述源代码的抽象语法树和控制流图;
步骤2:替换源代码中的变量名、扰乱源代码布局并删除辅助信息;
步骤3:转换源代码中变量状态,将常量转换为函数调用或算术表达式,以修改智能合约中的数据字段;
步骤4:将全局代码控制流控制流、函数体内控制流以及循环或分支基本块通过switch-case的方式扁平化,并在循环或分支语句基于结合Chebyshev和PWLCM的一维混沌映射CPM生成并引入混沌永真不透明谓词,以隐藏原始程序的内部逻辑;
步骤5:判断智能合约混淆前后功能是否一致,在功能一致的前提下,完成Solidity语言的源代码混淆。
2.根据权利要求1所述的一种Solidity语言源代码混淆方法,其特征在于,所述步骤2,包括如下步骤:
步骤21:寻找源代码中每个变量的名字和对应位置,使用加密算法生成对应的加密值后进行替换;
步骤22:使用正则表达式,将换行、空格字符替换为‘’,并且将连续空白替换为单个空白;
步骤23:使用正则表达式,将源代码中的单行注释和多行注释全都替换为‘’,删除源代码中的辅助信息。
3.根据权利要求1所述的一种Solidity语言源代码混淆方法,其特征在于,所述步骤3包括如下步骤:
步骤31:寻找源代码中的所有被声明的本地变量,用新声明的全局变量替换找到的本地变量;
步骤32:寻找源代码中的所有类型常量的位置和数值,根据常量值声明数组,然后将常量替换为对应的函数调用,实现静态数据转为动态生成;
步骤33:寻找源代码中的所有布尔变量,若布尔变量为真,使用“或”运算符与后续表达式相连接;若布尔变量为假,使用“与”运算符与后续表达式相连接;所述后续表达式是一个布尔运算表达式或是一个算术表达式,或其组合;
步骤34:寻找源代码中所有状态变量,将它们集中在一个结构体中,通过结构体成员变量的方式调用它们,从而将标量转为向量。
4.根据权利要求1所述的一种Solidity语言源代码混淆方法,其特征在于,所述步骤4中全局代码控制流扁平化和函数体内控制流扁平化的代码实现是一样的,都是通过switch-case的方式进行扁平化操作,只是函数体内控制流扁平化多了函数外壳抽取的步骤;循环或分支基本块扁平化则是更进一步需要解析循环或者分支语句中的表达式,根据表达式的真值状态进行扁平化,若表达式的真值为真,则生成一个switch-case分支,若表达式的真值为假,则生成另一个swith-case分支。
5.根据权利要求1所述的一种Solidity语言源代码混淆方法,其特征在于,改进后一维混沌映射的定义如下:
其中,给定一个初始值x0,根据x0迭代出x1,随之得出xn,xn∈[-1,1],由xn生成xn+1;μ,p均为该混沌映射的控制参数,μ∈Z*,p∈(0,0.5);F为该一维混沌映射的迭代公式,当0.5≤xn1时,函数中的变量xn=1-xn,其余参数μ,p不变;当μ≥2,p∈(0,0.5)时,CPM混沌映射处于混沌状态;M属于该混沌映射中密钥的部分组成,是该混沌映射的扰动参数。
6.根据权利要求1所述的一种Solidity语言源代码混淆方法,其特征在于,选定不透明谓词将要插入的表达式Exp,观察其结构并且按照规则进行分解,然后根据分解结果生成若干数目不透明谓词P,将生成的不透明谓词和分解结果进行合并,若生成为永真不透明谓词则为ExpP,若生成为永假不透明谓词则为Exp||P并且平移,生成新的表达式,增加了混淆过程的复杂度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210230894.8/1.html,转载请声明来源钻瓜专利网。