一种基于以太坊虚拟机的代码插桩框架系统

文档序号:1170069 发布日期:2020-09-18 浏览:28次 >En<

阅读说明:本技术 一种基于以太坊虚拟机的代码插桩框架系统 (Code pile inserting frame system based on Ether house virtual machine ) 是由 吴斯韦 周亚金 吴磊 任奎 于 2020-06-02 设计创作,主要内容包括:本发明公开一种基于以太坊虚拟机的代码插桩框架系统,包括分析脚本载入模块、分析脚本执行模块、以太坊虚拟机插桩模块、动态污点引擎模块、分析脚本接口模块;以太坊虚拟机插桩模块一方面在以太坊虚拟机中插入三类插桩点,用于打断以太坊虚拟机的执行,另一方面为分析脚本接口模块提供虚拟机在执行过程中的各类数据支持;分析脚本载入模块用于载入分析脚本并记录用户在意的插桩点;动态污点引擎模块用于为分析脚本接口模块提供数据流分析相关的各类数据支持;分析脚本接口模块为分析脚本执行模块提供接口查看虚拟机执行过程中各类数据和数据流分析相关的各类数据。本发明通过提供丰富的接口,帮助分析人员减小开发成本,大大减少运行性能损耗。(The invention discloses a code pile inserting frame system based on an Etheng virtual machine, which comprises an analysis script loading module, an analysis script execution module, an Etheng virtual machine pile inserting module, a dynamic stain engine module and an analysis script interface module, wherein the analysis script loading module is used for loading a code pile inserting frame; the Ethernet workshop virtual machine pile inserting module is used for inserting three types of pile inserting points into the Ethernet workshop virtual machine for interrupting the execution of the Ethernet workshop virtual machine on one hand, and providing various data supports of the virtual machine in the execution process for the analysis script interface module on the other hand; the analysis script loading module is used for loading an analysis script and recording the stake inserting points which are the intention of a user; the dynamic taint engine module is used for providing various data supports related to data flow analysis for the analysis script interface module; the analysis script interface module provides an interface for the analysis script execution module to view various data in the execution process of the virtual machine and various data related to data flow analysis. The invention helps analysts reduce development cost and greatly reduce running performance loss by providing abundant interfaces.)

一种基于以太坊虚拟机的代码插桩框架系统

技术领域

本发明涉及程序分析信息技术领域,具体涉及一种基于以太坊虚拟机的代码插桩框架系统。

背景技术

近年来,随着比特币系统的平稳运行,区块链技术受到世界范围内广泛的关注,而以太坊的诞生又是一个里程碑意义的事件。以太坊作为市值排名第二的区块链平台,最重要的突破和特色就是配备了图灵完备的以太坊虚拟机,可以支持智能合约的执行。以太坊原生的以太币以及在以太坊上发行的众多数字货币已经具备了相当的金融属性。以太坊网络由运行着以太坊客户端软件的节点组成,主要包括Go-Ethereum(简称Geth)和Parity等。

由于区块链技术,以太坊平台,智能合约都是新生事物,又因其具备的金融属性,近些年吸引了许多的恶意攻击者在以太坊平台上兴风作浪,严重地影响了以太坊的生态,比如臭名昭著的重入攻击,曾对以太坊平台造成巨大的影响。

程序插桩技术,是在保证被测程序原有逻辑完整性的基础上在程序中***一些“探针”,本质上就是进行信息采集的代码段,通过“探针”的执行抛出程序运行的特征数据,通过对这些数据的分析,可以获取程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息。程序插桩被广泛用于传统程序分析中。

随着以太坊平台上各类攻击漏洞层出不穷,结合程序插桩技术检测恶意行为的需求也愈发急迫,而近年来已经出现了一些基于插桩技术的攻击检测方法,不过由于没有成熟的插桩框架出现,目前以太坊与插桩技术的结合仍然是通过直接对以太坊虚拟机***“探针”的方式,这需要分析人员对以太坊虚拟机的代码逻辑非常了解,并且针对不同类型攻击的检测会需要不同的插桩方式,不仅需要分析人员投入很高的开发成本,而且缺乏可扩展性。

Geth内嵌的trace功能提供了一个朴素的插桩框架,它在执行时会在每一个操作码(opcode)执行之前跳转到插桩代码的执行环境,而不管用户是否在意该种操作码(opcode),此种设计会带来额外的上下文切换开销,无法应对大规模的实验。并且它不具备动态污点引擎,分析人员在使用时仍然需要付出很高的开发成本来追踪程序的数据流。

发明内容

为了解决现有技术中存在的上述缺陷,本发明的公开了一种基于以太坊虚拟机的代码插桩框架系统,该系统可以帮助用户以最低的开发成本深入到以太坊虚拟机层面来理解和检测恶意行为。具体技术方案如下:

一种基于以太坊虚拟机的代码插桩框架系统,其特征在于,该系统包括分析脚本载入模块、分析脚本执行模块、以太坊虚拟机插桩模块、动态污点引擎模块和分析脚本接口模块;

所述的以太坊虚拟机插桩模块一方面在以太坊虚拟机中***三类插桩点,用于打断以太坊虚拟机的执行,另一方面为所述的分析脚本接口模块提供以太坊虚拟机在执行过程中的各类数据支持;所述的三类插桩点包括常规交易类插桩点、智能合约类插桩点和操作码类插桩点;所述的常规交易指的是由非智能合约账户发起的交易;

所述的分析脚本载入模块用于载入分析脚本并记录用户在意的插桩点;

所述的分析脚本执行模块用于执行分析脚本;

所述的动态污点引擎模块用于为所述的分析脚本接口模块提供数据流分析相关的各类数据支持;

所述的分析脚本接口模块为所述的分析脚本执行模块提供接口,查看以太坊虚拟机在执行过程中的各类数据和数据流分析相关的各类数据。

进一步地,所述的常规交易类插桩点包含常规交易的开始和常规交易的结束。

进一步地,所述的智能合约插桩点包含执行一个智能合约的开始和结束。

进一步地,所述的操作码类插桩点包含操作码执行之前和操作码执行之后。

进一步地,所述的虚拟机在执行过程中的各类数据包括以太坊虚拟机中的栈、内存,交易输入字段、所涉及智能合约的状态变量和交易返回字段、当前交易的交易哈希和所处区块号;

其中,所述的栈、内存指的是以太坊虚拟机中的数据存储结构。

进一步地,所述的数据流分析相关的各类数据指的是动态污点引擎模块自主维护的用于存储和传播污点的影子栈、影子内存、影子交易输入字段、所涉及智能合约的影子状态变量和影子交易返回字段。

本发明的有益效果如下:

本发明的代码插桩框架系统可以帮助分析人员深入到以太坊虚拟机层面来理解和检测恶意行为,通过提供灵活的插桩接口,在完成基于以太坊虚拟机插桩的交易分析任务中可以节省用户大量的开发成本;通过提供查看以太坊虚拟机在执行过程中的各类数据的接口,节省了用户理解以太坊虚拟机底层逻辑的开发成本;通过配备动态污点引擎提供的查看数据流相关的各类数据的接口,节省了用户记录数据流的开发成本;通过提前加载用户脚本并记录用户在意的插桩点,可以做到在执行时按需调用用户的分析脚本,避免不必要的上下文切换而带来的性能损耗。

附图说明

图1为本发明的基于以太坊虚拟机的代码插桩框架系统的示意图。

具体实施方式

下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

如图1所示,本发明的基于以太坊的代码插桩框架系统,包括:

(1)以太坊虚拟机插桩模块,该模块一方面在以太坊虚拟机中***三类插桩点,用于打断以太坊虚拟机的执行,另一方面为分析脚本接口模块提供以太坊虚拟机在执行过程中的各类数据支持;所述的三类插桩点包括:

①常规交易类插桩点:常规交易的开始和常规交易的结束。

②智能合约类插桩点:执行一个智能合约的开始和结束。

③操作码类插桩点:操作码执行之前和操作码执行之后。

所述的常规交易指的是由非智能合约账户发起的交易。

所述的虚拟机在执行过程中的各类数据包括以太坊虚拟机中的栈、内存、交易输入字段,所涉及智能合约的状态变量和交易返回字段、当前交易的交易哈希和所处区块号;

所述的栈、内存指的是以太坊虚拟机中的数据存储结构。

(2)分析脚本载入模块,该模块用于载入分析脚本并记录用户在意的插桩点,目的是为了避免不必要的上下文切换而带来的性能损耗;所述的上下文切换指的是从以太坊虚拟机的执行上下文切换到分析脚本引擎的执行上下文。

(3)分析脚本执行模块,该模块用于执行分析脚本。

(4)动态污点引擎模块,该模块用于为分析脚本接口模块提供数据流分析相关的各类数据支持;所述的数据流分析相关的各类数据指的是动态污点引擎模块自主维护的用于存储和传播污点的影子栈、影子内存、影子交易输入字段、所涉及智能合约的影子状态变量和影子交易返回字段。

(5)分析脚本接口模块,该模块用于为分析脚本执行模块提供接口,查看以太坊虚拟机在执行过程中的各类数据和数据流分析相关的各类数据。

如图1所示,本发明的基于以太坊虚拟机的代码插桩框架系统部署在Geth内嵌的以太坊虚拟机中,其中分析脚本执行模块采用的是go-duktape提供的JavaScript执行引擎,为用户提供的开发脚本语言是JavaScript。

本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

6页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种对抗样本生成方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类