【技术实现步骤摘要】
一种高可用的智能合约字节码重写方法、介质及装置
[0001]本专利技术涉及智能合约漏洞防治领域,特别涉及一种高可用智能合约字节码重写方法、介质及装置。
技术介绍
[0002]智能合约(Smart Contract)是部署在区块链上的程序,通过一系列的规则决定交易如何发生,为自动化、分布式交易提供了可能。然而,由于智能合约携带金融属性,且具有部署后不可改变的特性,使其成为黑客攻击的目标。因此需要漏洞防治方法保证智能合约的安全性。
[0003]现有的漏洞防治方案有三种思路,即链下漏洞防治、链上漏洞防治与漏洞修复。链下漏洞防治采用符号执行、模糊测试与模式匹配等技术构建漏洞检测方法,旨在保证合约部署至区块链前的安全性;链上漏洞防治关注合约部署后的安全性,通过向智能合约或以太坊虚拟机(Ethereum Virtual Machine,EVM)嵌入特定漏洞检测程序,在检测到特定漏洞时回溯该交易,以此保证部署后的合约安全性;漏洞修复采用字节码重写技术(Bytecode Rewriting)修复链上存在漏洞的智能合约。如SMARTSHIELD[ZHANG Y,MA S,LI J,et al.Smartshield:Automatic Smart Contract Protection Made Easy[C]//2020IEEE 27th International Conference on Software Analysis,Evolution and Reengineering(SANER).London:IEEE,2 ...
【技术保护点】
【技术特征摘要】
1.一种高可用的智能合约字节码重写方法,其特征在于,包括:对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果;根据智能合约字节码的反编译结果,采用基于蹦床机制的指令重写方法以完成字节码的重写。2.如权利要求1所述的高可用的智能合约字节码重写方法,其特征在于,所述对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果包括:解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P;通过疑似内嵌数据区间序列P定位智能合约内嵌数据d;通过内嵌数据区间d反编译智能合约字节码代码部分。3.如权利要求2所述的高可用的智能合约字节码重写方法,其特征在于,所述解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P包括:假定不考虑内嵌数据的存在,强制将智能合约字节码反编译得到指令集I
force
;遍历指令集I
force
,找出所有内存拷贝指令,并提取内存拷贝指令相应参数对<offset,length>;以offset为键从大到小进行排序得到疑似内嵌数据区间序列P=<offset1,length1>,...,<offset
n
,,length
n
>。4.如权利要求2所述的高可用的智能合约字节码重写方法,其特征在于,所述通过疑似内嵌数据区间序列P定位智能合约内嵌数据d包括:首先,判断疑似内嵌数据P中第一个区间结尾P[0].end是否为字节码结尾,即isEnd(P[0].end);如果为否,则返回empty,否则继续;接着,找到疑似区间序列P的尾部连续区间序列L;初始化当前连续区间π为P[0],初始化连续区间序列L为空;遍历疑似内嵌数据区间序列P,如果该区间与当前连续区间存在交集,即其中i∈{1,2,...,P.length},则更新连续区间π为π∪P[i]并将π添加至连续区间序列L中;最后,遍历逆序连续区间序列L,判断该区间前一条指令是否为终止指令,即isEndIns(getPreIns(L[i])),其中i∈{L.length,...,0};如果为是,则返回该区间L[i],此时该区间即为内嵌数据区间d;如无法找到为满足上述条件的区间,则返回empty。5.如权利要求2所述的高可用的智能合约字节码重写方法,其特征在于,所述通过内嵌数据区间d反编译智能合约字节码代码部分包括:取智能合约字节码的内嵌数据区间补集,即得到智能合约字节码代码的区间c;依据字节码与机器码的对应关系,将智能合约字节码代码的区间c反编译。6.如权利要求1所述的高可用的智能合约字节码重写方法,其特征在于,所述根据智能合约字节码的反编译结果,采用基于蹦床机...
【专利技术属性】
技术研发人员:王立波,彭泳翔,刘志全,郭穗鸣,宋凌,丁振杨,许诺,范文杰,
申请(专利权)人:暨南大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。