Contractfuzzer 框架分析(源码分析)

这篇具有很好参考价值的文章主要介绍了Contractfuzzer 框架分析(源码分析)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近阅读了Contractfuzzer的源代码,总结了Contractfuzzer的系统框架图

contractfuzzer,测试用例,智能合约,区块链

 Contractfuzzer 是第一篇智能合约fuzz的文章,其主要分为三个模块,分别是测试用例生成模块、交易自动化发送模块和交易执行与漏洞检测模块。

一、测试用例生成模块(对应文件Contract_fuzzer)

contractfuzzer,测试用例,智能合约,区块链

测试用例生成模块主要负责测试用例的生成以及接收来自geth-cf的测试结果,并对测试结果进行处理展示。测试用例的生成步骤如图所示

(1)先读取相应的文件生成测试过程所需要的数据集,并构建数据集间的数据映射关系

(2)然后随机确定合约的模糊次数和测试用例数

(3)根据合约的ABI码随机选取一个函数作为模糊的对象

(4)系统根据函数的输入参数自动选择种子生成测试用例,不同类型的输入参数使用不同的策略生成测试数据,最后将测试用例发给test模块,由test组成交易打包发送给EVM执行。

二、交易发送模块(Contract_test模块)

contractfuzzer,测试用例,智能合约,区块链

test模块主要是接收来自fuzzer模块的测试用例,并封装成为交易发送给虚拟机EVM执行。在test中分为两种发送者账户,一个是合约的所有者账户、一个是普通用户账户,test模块会分别使用这两种账户发出交易。

除此之外,在测试的时候会同时发出两种交易,一种是发给目标合约的交易,用来检测合约中是否存在普通的漏洞,另一种交易是发送给重入攻击合约,用来检测合约中是否存在重入漏洞。

三、漏洞检测模块(geth-cf中的插桩)

contractfuzzer,测试用例,智能合约,区块链

contractfuzzer,测试用例,智能合约,区块链  

在geth_cf中,作者通过插桩在虚拟机中收集交易执行过程中的操作码、合约状态和callhash等信息,等交易执行结束之后利用预先定义的漏洞检测方法对收集到的数据进行模式匹配,从而检测出漏洞是否存在相应的漏洞。

四、结果的处理与展示

Contract_fuzzer模块的Serve文件通过检测geth_cf发送过来的检测报告中的关键词,规范化的输出合约的检测结果和合约的执行日志等文章来源地址https://www.toymoban.com/news/detail-809317.html

到了这里,关于Contractfuzzer 框架分析(源码分析)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 接口测试的流程和步骤,主要测试哪些方面,测试工具,测试用例,以及测试框架

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月25日
    浏览(43)
  • Jest | 测试框架实战之-测试用例编写与覆盖率解读

    通常写完库的测试用例,总要跑跑覆盖率,看看测试用例写得如何,jest刚好也支持查看覆盖率,对应的指令是:jest --coverage。当然在继续往下看,如果还没搭建jest环境,可以先搭建,毕竟实践出真知。 如何编写测试用例,已经存在很多教程,官方也有非常多例子,因此这里

    2024年02月03日
    浏览(44)
  • 微信小程序自动化测试框架 Minium——PO模式测试用例

    本文主要介绍PO模式的测试用例,PO模式优点及层级间的关系,相关配置及运行 minitest的测试小程序和测试case:minitest-demo miniprogram-demo :测试小程序 testcase :测试case,同时也包含文档的测试case testcase-PO :Page Object(PO) 模式的测试case PO模式是自动化测试项目开发实践的最佳设

    2024年02月07日
    浏览(55)
  • 添加边界值分析测试用例

    1.1创建项目成功后会自动生成封装好的函数,在这些封装好的函数上点击右键,添加边界值分析测试用例,如下图所示。 1.2生成的用例模版是不可以直接运行的,需要我们分别点击它们,让它们自动生成相应测试用例。如下图所示,分别为变化前和变化后。 1.3点击选中生成

    2024年01月18日
    浏览(48)
  • 分析:如何多线程运行测试用例

    这是时常被问到的问题,尤其是UI自动化的运行,过程非常耗时,所以,所以多线程不失为一种首先想到的解决方案。 多线程是针对的测试用例,所以和selenium没有直接关系,我们要关心的是单元测试框架。 首先,应该说明的是unittest本身是不支持多线程的。当然,如果你学

    2024年02月09日
    浏览(39)
  • 测试用例(分析法——详细场景法)

    测试用例的定义 :是为某个业务目标,而编制的一组由测试输入,执行条件以及预期结果组成的案例 测试用例模板 : 用例编号,用例模块,用例标题,优先级,前置条件,输入内容,操作步骤,预期结果,时间结果 常见的编写测试用例的方法 等价划分 :  等价类划分属于典型的功能

    2023年04月09日
    浏览(44)
  • vectorCast添加边界值分析测试用例

    1.1创建项目成功后会自动生成封装好的函数,在这些封装好的函数上点击右键,添加边界值分析测试用例,如下图所示。 1.2生成的用例模版是不可以直接运行的,需要我们分别点击它们,让它们自动生成相应测试用例。如下图所示,分别为变化前和变化后。 1.3点击选中生成

    2024年01月22日
    浏览(43)
  • 火爆全网,Pytest自动化测试框架-测试用例执行与失败重跑(实战详细)

    用例执行状态 用例执行完成后,每条用例都有自己的状态,常见的状态有 passed:测试通过 failed:断言失败 error:用例本身写的质量不行,本身代码报错(譬如:fixture不存在,fixture里面有报错) xfail:预期失败,加了 @pytest.mark.xfail() error例子1:参数不存在 为啥是error pwd参数

    2024年02月11日
    浏览(44)
  • 测试框架pytest教程(2)-用例依赖库-pytest-dependency

    对于 pytest 的用例依赖管理,可以使用  pytest-dependency  插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插件: 依赖方法和被依赖方法都需要使用装饰器

    2024年02月11日
    浏览(35)
  • 测试框架pytest教程(5)运行失败用例-rerun failed tests

    运行这个文件,2个失败,48个通过。 要运行上次失败的测试用例,可以使用 --lf (或 --last-failed )选项来告诉pytest只运行上次运行时失败的测试。 命令行示例: 或者在pytest配置文件(比如pytest.ini)中设置: 这样,pytest会检测上次运行时失败的测试用例,并只运行这些失败

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包