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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56965d1b948b3e58f78733178337340969f4fa6eadcbcffda451e0b786100a0f |
|
MD5 | 3c4d3a3c3c1bd282c76002c3d27c5e08 |
|
BLAKE2b-256 | fd8836d38d7918769d583cbd35f07ff4a2003376cb4b8070da0860b42181b7e2 |
File details
Details for the file evm_cfg_builder_fixed-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: evm_cfg_builder_fixed-0.3.1-py3-none-any.whl
- Upload date:
- Size: 6.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29ce7204b535f05c383ac67137f38effff3e3e113d9480c6d20b26a5e27684df |
|
MD5 | 14d50a8e18dfd52afb1d1e8d52fba5d0 |
|
BLAKE2b-256 | c997e0e8d68f9473c35cdc0de59a2f35b65696e33ed50404b63eb318223d2386 |