Security analysis tool for EVM bytecode. Supports smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Bernhard Mueller f54afd889c Update README.md 7 years ago
ether Update db initialization 7 years ago
rpc Add simple search 7 years ago
.gitignore Update backend database to ZODB 7 years ago
LICENSE Refactor and add setup.py 7 years ago
README.md Update README.md 7 years ago
contractstorage.py Update db initialization 7 years ago
mythril Search function now returns contract code 7 years ago
requirements.txt Update requirements.txt 7 years ago
setup.py Update setup.py 7 years ago

README.md

Mythril

Mythril is a bug hunting tool and framework for the Ethereum blockchain.

Installation and setup

Install from Pypi:

$ pip install mythril

Or, clone the GitHub repo to install the newest master branch:

$ git clone https://github.com/b-mueller/mythril/
$ cd mythril
$ python setup.py install

You also need a go-ethereum node that is synced with the network (not that Mythril uses non-standard RPC APIs offered by go-ethereum, so other clients likely won't work). Start the node as follows:

$ geth --rpc --rpcapi eth,admin,debug --syncmode fast

Database initialization

Mythril builds its own contract database to enable quick search for opcode sequences, function calls, et cetera. The initial sync is done over RPC. Unfortunately, this process is slow - however, you don't need to sync the whole blockchain to start working. If you abort the syncing process with ctrl+c, it will auto-resume the next time you run the --init-db command.

$ ./mythril --init-db
Starting synchronization from latest block: 4323706
Processing block 4323000, 3 individual contracts in database
(...)

Command line usage

-- TODO --

I'm currently rewriting the whole thing and the docs need to be updated.

Credit

JSON RPC library is adapted from ethjsonrpc (it doesn't seem to be maintained anymore, and I needed to make some changes to it).