CN115718922B - 一种高可用的智能合约字节码重写方法、介质及装置 - Google Patents

一种高可用的智能合约字节码重写方法、介质及装置 Download PDF

Info

Publication number
CN115718922B
CN115718922B CN202211501602.6A CN202211501602A CN115718922B CN 115718922 B CN115718922 B CN 115718922B CN 202211501602 A CN202211501602 A CN 202211501602A CN 115718922 B CN115718922 B CN 115718922B
Authority
CN
China
Prior art keywords
intelligent contract
embedded data
rew
rewriting
byte code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211501602.6A
Other languages
English (en)
Other versions
CN115718922A (zh
Inventor
王立波
彭泳翔
刘志全
郭穗鸣
宋凌
丁振杨
许诺
范文杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinan University
Original Assignee
Jinan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinan University filed Critical Jinan University
Priority to CN202211501602.6A priority Critical patent/CN115718922B/zh
Publication of CN115718922A publication Critical patent/CN115718922A/zh
Application granted granted Critical
Publication of CN115718922B publication Critical patent/CN115718922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种高可用的智能合约字节码重写方法、介质及装置;该方法首先基于内存拷贝指令构建内嵌数据定位算法,解析并反编译智能合约字节码结构;接着基于蹦床机制对智能合约字节码进行重写并修正内嵌数据地址偏移;最终实现对智能合约字节码的重写;本发明提出的技术方案与现有的字节码重写方案,有着更高的可用性,能够提升智能合约字节码重写成功率,并能有效对复杂智能合约字节码进行重写。

Description

一种高可用的智能合约字节码重写方法、介质及装置
技术领域
本发明涉及智能合约漏洞防治领域,特别涉及一种高可用智能合约字节码重写方法、介质及装置。
背景技术
智能合约(Smart Contract)是部署在区块链上的程序,通过一系列的规则决定交易如何发生,为自动化、分布式交易提供了可能。然而,由于智能合约携带金融属性,且具有部署后不可改变的特性,使其成为黑客攻击的目标。因此需要漏洞防治方法保证智能合约的安全性。
现有的漏洞防治方案有三种思路,即链下漏洞防治、链上漏洞防治与漏洞修复。链下漏洞防治采用符号执行、模糊测试与模式匹配等技术构建漏洞检测方法,旨在保证合约部署至区块链前的安全性;链上漏洞防治关注合约部署后的安全性,通过向智能合约或以太坊虚拟机(Ethereum Virtual Machine,EVM)嵌入特定漏洞检测程序,在检测到特定漏洞时回溯该交易,以此保证部署后的合约安全性;漏洞修复采用字节码重写技术(BytecodeRewriting)修复链上存在漏洞的智能合约。如SMARTSHIELD[ZHANG Y,MA S,LI J,etal.Smartshield:Automatic Smart Contract Protection Made Easy[C]//2020IEEE27th International Conference on Software Analysis,Evolution andReengineering(SANER).London:IEEE,2020:23-34]基于精确控制流图(Control-FlowGraph)构建字节码重写方法,重写包含漏洞的智能合约字节码以修复智能合约。然而,由于精确控制流图构建困难,因此该方法难以处理复杂合约。EVMPatch[RODLER M,LI W,KARAMEG O,et al.EVMPatch:Timely andAutomated Patching ofEthereum Smart Contracts[C]//30th USENIX Security Symposium(USENIX Security 21).2021:1289-1306.]基于蹦床(Trampoline)构建字节码重写方法,该方法不依赖于精确控制流图,因此能够处理复杂合约。然而,该方法未提供有效的内嵌数据处理机制,因而无法处理含有内嵌数据的智能合约,大大降低了可用性。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种支持内嵌数据处理、复杂合约处理的高可用智能合约字节码重写方法、介质及装置。
为实现上述目的,本发明的技术方案是:
第一方面,本发明提供一种高可用的智能合约字节码重写方法,包括:
对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果;
根据智能合约字节码的反编译结果,采用基于蹦床机制的指令重写方法以完成字节码的重写。
进一步地,所述对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果包括:
解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P;
通过疑似内嵌数据区间序列P定位智能合约内嵌数据d;
通过内嵌数据区间d反编译智能合约字节码代码部分。
进一步地,所述解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P包括:
假定不考虑内嵌数据的存在,强制将智能合约字节码反编译得到指令集Iforce
遍历指令集Iforce,找出所有内存拷贝指令,并提取内存拷贝指令相应参数对<offset,length>。以offset为键从大到小进行排序得到疑似内嵌数据区间序列P=<offset1,length1>,...,<offsetn,,lengthn>。
进一步地,所述通过疑似内嵌数据区间序列P定位智能合约内嵌数据d包括:
首先,判断疑似内嵌数据P中第一个区间结尾P[0].end是否为字节码结尾,即isEnd(P[0].end);如果为否,则返回empty,否则继续;
接着,找到疑似区间序列P的尾部连续区间序列L;初始化当前连续区间π为P[0],初始化连续区间序列L为空;遍历疑似内嵌数据区间序列P,如果该区间与当前连续区间存在交集,即
Figure BDA0003966544490000021
其中i∈{1,2,...,P·length},则更新连续区间π为π∪P[i]并将π添加至连续区间序列L中;
最后,遍历逆序连续区间序列L;判断该区间前一条指令是否为终止指令,即isEndIns(getPreIns(L[i])),其中i∈{L·length,...,0};如果为是,则返回该区间L[i],此时该区间即为内嵌数据区间d;如无法找到为满足上述条件的区间,则返回empty。
进一步地,所述通过内嵌数据区间d反编译智能合约字节码代码部分包括:
取智能合约字节码的内嵌数据区间补集,即得到智能合约字节码代码的区间c;
依据字节码与机器码的对应关系,将智能合约字节码代码的区间c反编译。
进一步地,所述根据智能合约字节码的反编译结果,采用基于蹦床机制的指令重写方法以完成字节码的重写包括:
根据智能合约字节码的反编译结果,基于蹦床机制对智能合约字节码进行指令重写;
修正因指令重写而产生的内嵌数据偏移。
进一步地,所述根据智能合约字节码的反编译结果,基于蹦床机制对智能合约字节码进行指令重写包括:
拷贝与更改:重写点为Prew,所在基本块为重写基本块Brew;将Brew拷贝并进行更改,更改结果记为R(Brew,Prew),并在尾部添加跳转代码Jback,最终得到重写后的基本块B′rew,其中B′rew=R(Brew,Prew)+Jback
替换:将重写后的基本块B′rew替换为蹦床T。蹦床T由指向B′rew的跳转代码Jin与数个无效字节码Iinv组成,通过调整Iinv的数目n∈N以使蹦床T与Brew长度相同,即T.length=Jin.length+Iinv.length*n=Brew·length;
新增:将B′rew增加至字节码的代码末尾。
进一步地,所述修正因指令重写而产生的内嵌数据偏移包括:
遍历智能合约字节码代码部分,找出所有指向内嵌数据的内存拷贝指令的offset参数,得到offset序列Ioff
遍历offset序列Ioff将旧的offsetold修正为新的offsetnew,修正公式为offsetnew=offsetold+codenew,其中codenew为指令重写后新增的代码,即为B′rew
第二方面,本发明提供一种高可用智能合约字节码重写装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一所述方法的步骤。
第三方面,本发明一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述方法的步骤。
本发明与现有技术相比,其有益效果在于:
(1)本发明基于内存拷贝指令定位智能合约字节码内嵌数据,能有效区分智能合约字节码代码与内嵌数据边界,从而使在指令重写步骤中能获得完整的智能合约字节码结构信息,进而提高智能合约字节码重写成功率。
(2)本发明基于蹦床机制对智能合约字节码进行指令重写,从而能在非侵入情况下重写智能合约字节码。同时由于不依赖于构建精确控制流图,因此能有效重写复杂智能合约字节码。
附图说明
图1是本发明实施例1提供的高可用智能合约字节码重写方法的架构示意图;
图2是由内存拷贝指令定位的疑似内嵌数据区间;
图3是基于蹦床机制的指令重写过程示意图;
图4为本发明实施例2提供的高可用智能合约字节码重写装置的组成示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1:
参阅图1所示,本实施例提供的高可用智能合约字节码重写方法主要包括如下步骤:
S1、针对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果。
在此步骤中,基于内存拷贝指令定位智能合约字节码内嵌数据,能有效区分智能合约字节码代码与内嵌数据边界,从而使在指令重写步骤中能获得完整的智能合约字节码结构信息,进而提高智能合约字节码重写成功率。
S2、根据智能合约字节码的反编译结果,采用基于蹦床机制的指令重写方法以完成字节码的重写。
在此步骤中,基于蹦床机制对智能合约字节码进行指令重写,从而能在非侵入情况下重写智能合约字节码。同时由于不依赖于构建精确控制流图,因此能有效重写复杂智能合约字节码。
在具体实施中,上述的步骤S1包括如下步骤:
S11、解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P:
S111、假定不考虑内嵌数据的存在,强制将智能合约字节码反编译得到指令集Iforce
例如,对于智能合约字节码片段0xF40051,其中0xF400属于代码部分,而0x51属于内嵌数据部分,因此应反编译为<<RETURN,STOP>,51>。然而,此时无法区分代码与内嵌数据部分,因此在此步骤的反编译结果为<RETURN,STOP,MLOAD>。
S112、遍历指令集Iforce,找出所有内存拷贝指令,并提取内存拷贝指令相应参数对<offset,length>。以offset为键从大到小进行排序得到疑似内嵌数据区间序列P=<offset1,length1>,...,<offsetn,,lengthn>。
例如,假设此时指令集Iforce为<…,PUSH123,PUSH20124,DUP4,CODECOPY,…,PUSH116,PUSH20101,DUP3,CODECOPY,…>,可以提取内存拷贝指令(即CODECOPY)相应参数对<0x124,0x23>和<0x101,0x16>,以offset为键从大到小进行排序得到一种可能的疑似内嵌数据区间序列P=<0x124,0x23>,<0x101,0x16>,…。图2为一种可能的疑似内嵌数据区间序列分布。
S12、通过疑似内嵌数据区间序列P定位智能合约内嵌数据d,过程如下:
S121、首先,判断疑似内嵌数据P中第一个区间结尾P[0].end是否为字节码结尾,即i肀End(肀[0].e肀肀)。如果为否,则返回empty,否则继续。
S122、接着,找到疑似区间序列P的尾部连续区间序列L。初始化当前连续区间π为P[0],初始化连续区间序列L为空。遍历疑似内嵌数据区间序列P。如果该区间与当前连续区间存在交集,即
Figure BDA0003966544490000051
其中i∈{1,2,…,肀.le肀gth}。则更新连续区间π为π∪肀[i]并将π添加至连续区间序列L中。
例如,假设疑似区间序列为P=<0x40F,0x15>,<0x3E1,0x20>,<0x3DF,0x13>,<0x3CA,0x50>,<0x3C1,0x10>。此时,初始化连续区间π为<0x40F,0x15>。首先,连续区间π与<0x3E1,0x20>、<0x3DF,0x13>均无交集,因此连续区间π保持不变。接着,连续区间π与<0x3CA,0x50>存在交集,因此连续区间π更新为<0x3CA,0x5A>,并添加到连续区间序列L中。接下来,连续区间π与<0x3c1,0x10>也有交集,因此连续区间π更新为<0x3C1,0x43>,并添加到连续区间序列L中。最终得到连续区间序列L为<0x3CA,0x5A>,<0x3C1,0x43>。
S123、最后,遍历逆序连续区间序列L。判断该区间前一条指令是否为终止指令,即isEndIns(getPreIns(L[i])),其中i∈{L·length,...,0}。如果为是,则返回该区间L[i],此时该区间即为内嵌数据区间d。如无法找到为满足上述条件的区间,则返回empty。
S13、通过内嵌数据区间d反编译智能合约字节码代码部分:
S131、智能合约字节码的内嵌数据部分位于代码末尾,即智能合约结构为<code,data>。因此取智能合约字节码的内嵌数据区间补集,即得到智能合约字节码代码的区间c。
例如,假设内嵌数据区间为<0x3CA,0x43>,则智能合约字节码总长度为0x424(其中0x424=0x3CA+0x43),则相应的智能合约字节码代码区间c为<0x0,0x3CA>。
S132、依据字节码与机器码的对应关系,将智能合约字节码代码的区间c反编译。
在具体实施中,上述的步骤S2采用基于蹦床机制的指令重写方法,以智能合约字节码漏洞修复为应用场景,如图3所示,包括如下步骤:
S21、根据智能合约字节码的反编译结果,基于蹦床机制对智能合约字节码进行指令重写:
S211、拷贝与更改:重写点为Prew,所在基本块为重写基本块Brew。将Brew拷贝并进行更改,更改结果记为R(Brew,Prew)。为保持原有代码逻缉,需在尾部添加跳转代码Jback。最终得到重写后的基本块B′rew,其中B′rew=R(Brew,Prew)+Jback
例如图3所示,在CALL指令位置存在未处理异常漏洞。CALL指令所在位置为重写点Prew,所在基本块重写基本块Brew。将Brew拷贝并在CALL指令处添加检查以修复漏洞,得到更改结果R(Brew,Prew)。并在尾部添加跳转代码Jback,即为<PUSH201B1,JUMP>。最终得到重写后的基本块B′rew
S212、替换:将重写后的基本块B′rew替换为蹦床T。蹦床T由指向B′rew的跳转代码Jin与数个无效字节码Iinv组成,通过调整Iinv的数目n∈N以使蹦床T与Brew长度相同,即T.length=Jin·length+Iinv·length*n=Brew·length。
例如图3所示,Jin的长度为5个字节。假设Brew的长度为20个字节并且无效指令长度为1个字节,则
Figure BDA0003966544490000061
个,因此此时需要填充15个无效指令Iinv
S213、新增:将B′rew增加至字节码的代码末尾。字节码中代码与内嵌数据的边界在步骤S1中得到。
S22、修正因指令重写而产生的内嵌数据偏移:
S221、遍历智能合约字节码代码部分,找出所有指向内嵌数据的内存拷贝指令的offset参数,得到offset序列Ioff
S222、遍历offset序列Ioff将旧的offsetold修正为新的offsetnew,修正公式为offsetnew=offsetold+codenew,其中codenew为指令重写后新增的代码,即为B′rew
实施例2:
参阅图4所示,本实施例提供的高可用智能合约字节码重写装置包括处理器41、存储器42以及存储在该存储器42中并可在所述处理器41上运行的计算机程序43,例如高可用智能合约字节码重写程序。该处理器41执行所述计算机程序43时实现上述实施例1步骤,例如图1所示的步骤。
示例性的,所述计算机程序43可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器42中,并由所述处理器41执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序43在所述高可用智能合约字节码重写装置中的执行过程。
所述高可用智能合约字节码重写装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述高可用智能合约字节码重写装置可包括,但不仅限于,处理器41、存储器42。本领域技术人员可以理解,图4仅仅是高可用智能合约字节码重写装置的示例,并不构成高可用智能合约字节码重写装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述高可用智能合约字节码重写装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器41可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器42可以是所述高可用智能合约字节码重写装置的内部存储元,例如高可用智能合约字节码重写装置的硬盘或内存。所述存储器42也可以是所述高可用智能合约字节码重写装置的外部存储设备,例如所述高可用智能合约字节码重写装置上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器42还可以既包括所述高可用智能合约字节码重写装置的内部存储单元也包括外部存储设备。所述存储器42用于存储所述计算机程序以及所述高可用智能合约字节码重写装置所需的其他程序和数据。所述存储器42还可以用于暂时地存储已经输出或者将要输出的数据。
实施例3:
本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现实施例1所述方法的步骤。
所示计算机可读介质可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理再以电子方式获得所述程序,然后将其存储在计算机存储器中。
上述实施例只是为了说明本发明的技术构思及特点,其目的是在于让本领域内的普通技术人员能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡是根据本发明内容的实质所做出的等效的变化或修饰,都应涵盖在本发明的保护范围内。

Claims (10)

1.一种高可用的智能合约字节码重写方法,其特征在于,包括:
对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果;
根据智能合约字节码的反编译结果,采用基于蹦床机制的指令重写方法以完成字节码的重写。
2.如权利要求1所述的高可用的智能合约字节码重写方法,其特征在于,所述对于被重写的智能合约字节码,采用基于内存拷贝指令的定位方法区分智能合约字节码的代码与内嵌数据部分,并反编译智能合约字节码代码部分,得到智能合约字节码的反编译结果包括:
解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P;
通过疑似内嵌数据区间序列P定位智能合约内嵌数据d;
通过内嵌数据区间d反编译智能合约字节码代码部分。
3.如权利要求2所述的高可用的智能合约字节码重写方法,其特征在于,所述解析智能合约字节码,找到所有内存拷贝指令,并得到相应的参数区间,以此得到疑似内嵌数据区间P包括:
假定不考虑内嵌数据的存在,强制将智能合约字节码反编译得到指令集Iforce
遍历指令集Iforce,找出所有内存拷贝指令,并提取内存拷贝指令相应参数对<offset,length>;以offset为键从大到小进行排序得到疑似内嵌数据区间序列P=<offset1,length1>,...,<offsetn,,lengthn>。
4.如权利要求2所述的高可用的智能合约字节码重写方法,其特征在于,所述通过疑似内嵌数据区间序列P定位智能合约内嵌数据d包括:
首先,判断疑似内嵌数据P中第一个区间结尾P[0].end是否为字节码结尾,即isEnd(P[0].end);如果为否,则返回empty,否则继续;
接着,找到疑似区间序列P的尾部连续区间序列L;初始化当前连续区间π为P[0],初始化连续区间序列L为空;遍历疑似内嵌数据区间序列P,如果该区间与当前连续区间存在交集,即
Figure QLYQS_1
其中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所述的高可用的智能合约字节码重写方法,其特征在于,所述根据智能合约字节码的反编译结果,采用基于蹦床机制的指令重写方法以完成字节码的重写包括:
根据智能合约字节码的反编译结果,基于蹦床机制对智能合约字节码进行指令重写;
修正因指令重写而产生的内嵌数据偏移。
7.如权利要求6所述的高可用的智能合约字节码重写方法,其特征在于,所述根据智能合约字节码的反编译结果,基于蹦床机制对智能合约字节码进行指令重写包括:
拷贝与更改:重写点为Prew,所在基本块为重写基本块Brew;将Brew拷贝并进行更改,更改结果记为R(Brew,Prew),并在尾部添加跳转代码Jback,最终得到重写后的基本块B′rew,其中B′rew=R(Brew,Prew)+Jback
替换:将重写后的基本块B′rew替换为蹦床T,蹦床T由指向B′rew的跳转代码Jin与数个无效字节码Iinv组成,通过调整Iinv的数目n∈N以使蹦床T与Brew长度相同,即T.length=Jin·length+Iinv·length*n=Brew.length;
新增:将B′rew增加至字节码的代码末尾。
8.如权利要求6所述的高可用的智能合约字节码重写方法,其特征在于,所述修正因指令重写而产生的内嵌数据偏移包括:
遍历智能合约字节码代码部分,找出所有指向内嵌数据的内存拷贝指令的offset参数,得到offset序列Ioff
遍历offset序列Ioff将旧的offsetold修正为新的offsetnew,修正公式为offsetnew=offsetold+codenew,其中codenew为指令重写后新增的代码,即为B′rew
9.一种高可用的智能合约字节码重写装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8任一所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一所述方法的步骤。
CN202211501602.6A 2022-11-28 2022-11-28 一种高可用的智能合约字节码重写方法、介质及装置 Active CN115718922B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211501602.6A CN115718922B (zh) 2022-11-28 2022-11-28 一种高可用的智能合约字节码重写方法、介质及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211501602.6A CN115718922B (zh) 2022-11-28 2022-11-28 一种高可用的智能合约字节码重写方法、介质及装置

Publications (2)

Publication Number Publication Date
CN115718922A CN115718922A (zh) 2023-02-28
CN115718922B true CN115718922B (zh) 2023-05-26

Family

ID=85256599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211501602.6A Active CN115718922B (zh) 2022-11-28 2022-11-28 一种高可用的智能合约字节码重写方法、介质及装置

Country Status (1)

Country Link
CN (1) CN115718922B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647009A (zh) * 2018-03-22 2018-10-12 中钞信用卡产业发展有限公司杭州区块链技术研究院 区块链信息交互的装置、方法和存储介质
WO2021244054A1 (zh) * 2020-06-02 2021-12-09 浙江大学 基于智能合约字节码特征的合约代码混淆平台和混淆方法
CN114385525A (zh) * 2021-12-08 2022-04-22 航天信息股份有限公司 一种并发访问usb设备的方法及系统
CN115310100A (zh) * 2022-10-12 2022-11-08 鹏城实验室 智能合约漏洞修复方法、设备以及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108647009A (zh) * 2018-03-22 2018-10-12 中钞信用卡产业发展有限公司杭州区块链技术研究院 区块链信息交互的装置、方法和存储介质
WO2021244054A1 (zh) * 2020-06-02 2021-12-09 浙江大学 基于智能合约字节码特征的合约代码混淆平台和混淆方法
CN114385525A (zh) * 2021-12-08 2022-04-22 航天信息股份有限公司 一种并发访问usb设备的方法及系统
CN115310100A (zh) * 2022-10-12 2022-11-08 鹏城实验室 智能合约漏洞修复方法、设备以及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DC-Hunter:一种基于字节码匹配的危险智能合约检测方案;韩松明;梁彬;黄建军;石文昌;;信息安全学报(03);全文 *

Also Published As

Publication number Publication date
CN115718922A (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
He et al. Characterizing code clones in the ethereum smart contract ecosystem
US10698684B2 (en) Code injection and code interception in an operating system with multiple subsystem environments
US8291497B1 (en) Systems and methods for byte-level context diversity-based automatic malware signature generation
US9747172B2 (en) Selective access to executable memory
US9805188B2 (en) Control flow integrity system and method
US11507669B1 (en) Characterizing, detecting and healing vulnerabilities in computer code
US9535855B2 (en) Reorganization of virtualized computer programs
CN109643345B (zh) 用于确定性代码流完整性保护的技术
US20150163248A1 (en) Automatic curation and modification of virtualized computer programs
CN103765402A (zh) 使用混合代码签名跟踪程序的调用上下文
MX2007011377A (es) Arranque seguro.
US10452421B2 (en) Identifying kernel data structures
CN106716361A (zh) 用于运行时例程冗余跟踪的编译器高速缓存
US10395033B2 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
Zhang et al. BDA: practical dependence analysis for binary executables by unbiased whole-program path sampling and per-path abstract interpretation
WO2007008880A2 (en) Changing code execution path using kernel mode redirection
CN112749389B (zh) 一种检测智能合约破坏敏感数据漏洞的检测方法及装置
US8448243B1 (en) Systems and methods for detecting unknown malware in an executable file
CN102867144A (zh) 一种用于检测和清除计算机病毒的方法和装置
CN109977675A (zh) 一种开源软件识别方法及装置
CN114201756A (zh) 一种智能合约代码片段的漏洞检测方法和相关装置
CN115718922B (zh) 一种高可用的智能合约字节码重写方法、介质及装置
WO2015099780A1 (en) System and method of detecting malicious multimedia files
CN110807195B (zh) 一种智能合约的发布方法、发布平台装置及发布系统
CN114637988A (zh) 一种面向二进制的函数级软件随机化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant