Skip to main content

EVM cfg builder written in Python 3. Infinite loop error fixed by Soptq.

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)

> This version is modified by Soptq to possible infinite loop error.

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: `bash evm-cfg-builder mycontract.evm `

To export the CFG of each function (dot format), run: `bash 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 `bash pip install evm-cfg-builder `

### Using Git `bash 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-fixed-0.3.1.tar.gz (6.0 MB view details)

Uploaded Source

Built Distribution

evm_cfg_builder_fixed-0.3.1-py3-none-any.whl (6.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: evm-cfg-builder-fixed-0.3.1.tar.gz
  • Upload date:
  • Size: 6.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for evm-cfg-builder-fixed-0.3.1.tar.gz
Algorithm Hash digest
SHA256 56965d1b948b3e58f78733178337340969f4fa6eadcbcffda451e0b786100a0f
MD5 3c4d3a3c3c1bd282c76002c3d27c5e08
BLAKE2b-256 fd8836d38d7918769d583cbd35f07ff4a2003376cb4b8070da0860b42181b7e2

See more details on using hashes here.

File details

Details for the file evm_cfg_builder_fixed-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for evm_cfg_builder_fixed-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 29ce7204b535f05c383ac67137f38effff3e3e113d9480c6d20b26a5e27684df
MD5 14d50a8e18dfd52afb1d1e8d52fba5d0
BLAKE2b-256 c997e0e8d68f9473c35cdc0de59a2f35b65696e33ed50404b63eb318223d2386

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