EVM的深入研究和分析

最终目标是能够完整地理解已编译的Solidity合同
1、执行
evm-tools 安装
https://github.com/CoinCulture/evm-tools/blob/master/INSTALL.md
/home/xue/go/bin/evm --debug --code 366020036101000a600035045b6001900380600c57 --input 05

不同字节码编译成不同EVM指令
1、基本:disam显示指定地址后面的汇编代码
echo 60056004016000526001601ff3  | disasm
evm --debug --code 60056004016000526001601ff3
2、输入
echo 60003560203501 | disasm
evm --debug --code 60003560203501 --input 00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000004

2、合约

字节码在evm部署后编译为EVM指令集
$ echo 6005600401 | evm-deploy | disasm 
600580600b6000396000f36005600401
0      PUSH1  => 05
$ evm --debug --code 600580600b6000396000f36005600401

3、安全性

同一个合约每次在evm部署后生成的 合约地址不同
1、生成合约地址
// Contract Address: 1F2A98889594024BFFDA3311CBE69728D392C06D
$ evm --code $(echo "60056004016000526001601ff3" | evm-deploy)  --datadir evm-data
// Contract Address: 14F6D12ECEBB7606C528880AD8B97C25AB7D4AD9
$ evm --code $(echo "60056004016000526001601ff3" | evm-deploy)  --datadir evm-data
2、向合约发送交易
$ evm --to 14F6D12ECEBB7606C528880AD8B97C25AB7D4AD9 --datadir evm-data
Datadir already exists
Loading database
Loading root hash 60209E93FEFD3DD5CF1D6B3FBDC33DA1B020C5B880A51E8306A3F5FDF269122A
Loaded account for receiver 14F6D12ECEBB7606C528880AD8B97C25AB7D4AD9
CODE: 60056004016000526001601FF3
VM STAT 0 OPs
OUT: 0x09

4、异常

//  5f 不是合理操作码
evm --debug --code 5f
// JUMP (0x56)  要求堆栈中至少有一个参数
evm --debug --code 56
// 0x0 不是一个JUMPDEST
evm --debug --code 600056
// gas 超出异常
evm --debug --gas 1 --code 6000

5、内存和存

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EVM(以太坊虚拟机)是以太坊区块链中的核心组件,它负责执行智能合约的代码。然而,由于智能合约的代码可以由任何人编写并上传到区块链中执行,因此存在着各种安全漏洞。以下是一些常见的 EVM 执行层漏洞和详细分析: 1. 整数溢出漏洞:智能合约中的整数类型具有固定的长度,如果进行计算时超出了其长度,就会发生溢出。攻击者可以利用这个漏洞来执行不良操作,例如提取比应该更多的资金。 2. 重入攻击漏洞:重入攻击是指一个合约可以在另一个合约完成之前多次调用同一个合约。攻击者可以利用这个漏洞来重复执行某个操作,例如提取比应该更多的资金。 3. 拒绝服务攻击漏洞:智能合约中的代码可以执行无限循环,这可能会导致网络拥塞或导致节点崩溃。攻击者可以利用这个漏洞来瘫痪整个网络。 4. 访问控制漏洞:智能合约中的代码可能没有正确的访问控制机制,这可能导致攻击者可以访问应该受限制的数据和功能。 5. DOS攻击漏洞:攻击者可以利用智能合约中的递归调用来进行 DOS 攻击,这可能会导致网络拥塞或节点崩溃。 总之,EVM 执行层漏洞可能会导致资金损失、拒绝服务攻击、数据泄露等问题。为了确保以太坊的安全性,必须对智能合约进行细致的审查和测试,并采取必要的安全措施来防止这些漏洞被利用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值