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
Python >= 3.6
[pyevmasm](https://github.com/trailofbits/pyevmasm)
## 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for evm-cfg-builder-fixed-0.3.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56965d1b948b3e58f78733178337340969f4fa6eadcbcffda451e0b786100a0f |
|
MD5 | 3c4d3a3c3c1bd282c76002c3d27c5e08 |
|
BLAKE2b-256 | fd8836d38d7918769d583cbd35f07ff4a2003376cb4b8070da0860b42181b7e2 |
Hashes for evm_cfg_builder_fixed-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29ce7204b535f05c383ac67137f38effff3e3e113d9480c6d20b26a5e27684df |
|
MD5 | 14d50a8e18dfd52afb1d1e8d52fba5d0 |
|
BLAKE2b-256 | c997e0e8d68f9473c35cdc0de59a2f35b65696e33ed50404b63eb318223d2386 |