Skip to main content

EVM cfg builder written in Python 3.

Project description

# EVM CFG BUILDER [![Build Status](https://travis-ci.org/crytic/evm_cfg_builder.svg?branch=master)](https://travis-ci.org/crytic/evm_cfg_builder) [![Slack Status](https://empireslacking.herokuapp.com/badge.svg)](https://empireslacking.herokuapp.com) [![PyPI version](https://badge.fury.io/py/evm-cfg-builder.svg)](https://badge.fury.io/py/evm-cfg-builder)

evm-cfg-builder is used to extract a control flow graph (CFG) from EVM bytecode. It is used by Ethersplay, Manticore, and other tools from Trail of Bits. It is a reliable foundation to build program analysis tools for EVM.

We encourage contributions that address any known [issues](https://github.com/trailofbits/evm_cfg_builder/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) and will pay out bounties for accepted PRs. Join us on the [Empire Hacking Slack](https://empireslacking.herokuapp.com) to discuss using or extending evm-cfg-builder.

## Features

  • Reliably recovers a Control Flow Graph (CFG) from EVM bytecode using a dedicated Value Set Analysis

  • Recovers functions names

  • Recovers attributes (e.g., payable, view, pure)

  • Outputs the CFG to a dot file

  • Library API

## Usage

### Command line

To export basic dissassembly information, run: ` evm-cfg-builder mycontract.evm `

To export the CFG of each function (dot format), run: ` evm-cfg-builder mycontract.evm --export-dot my_dir `

dot files can be read using xdot.

### Library See [examples/explore_cfg.py](examples/explore_cfg.py) and [examples/explore_functions.py](examples/explore_functions.py) for library examples.

## How to install

### Using Pip ` $ pip install evm-cfg-builder `

### Using Git ` git clone https://github.com/trailofbits/evm_cfg_builder pip install . `

## Requirements

## Getting Help

Feel free to stop by our [Slack channel](https://empireslacking.herokuapp.com) (#ethereum) for help using or extending evm-cfg-builder.

## License

evm-cfg-builder is licensed and distributed under the AGPLv3. [Contact us](mailto:opensource@trailofbits.com) if you’re looking for an exception to the terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evm-cfg-builder-0.3.1.tar.gz (1.3 MB view details)

Uploaded Source

File details

Details for the file evm-cfg-builder-0.3.1.tar.gz.

File metadata

  • Download URL: evm-cfg-builder-0.3.1.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.25.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

File hashes

Hashes for evm-cfg-builder-0.3.1.tar.gz
Algorithm Hash digest
SHA256 eb9e8c268f0c678348bc022a40ab028c4a15211a2b2ab3d2fccf3b7874f6f926
MD5 7840f8b8286de821c6cca16506cee5ae
BLAKE2b-256 0b2e0d80d22647c485dc48d76a7d10730432acfd98314fcdcff5353a61225583

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page