Mythril is a security analysis tool for EVM bytecode. It detects security vulnerabilities in smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains. It uses symbolic execution, SMT solving and taint analysis to detect a variety of security vulnerabilities. It's also used (in combination with other tools and techniques) in the MythX security analysis platform.
If you are a smart contract developer, we recommend using MythX tools which are optimized for usability and cover a wider range of security issues.
Whether you want to contribute, need support, or want to learn what we have cooking for the future, our Discord server will serve your needs.
Get it with Docker:
$ docker pull mythril/myth
Install from Pypi:
$ pip3 install mythril
See the docs for more detailed instructions.
$ myth analyze <solidity-file>
$ myth analyze -a <contract-address>
Specify the maximum number of transaction to explore with
-t <number>. You can also set a timeout with
--execution-timeout <seconds>. Example (source code):
> myth a killbilly.sol -t 3 ==== Unprotected Selfdestruct ==== SWC ID: 106 Severity: High Contract: KillBilly Function name: commencekilling() PC address: 354 Estimated Gas Usage: 574 - 999 The contract can be killed by anyone. Anyone can kill this contract and withdraw its balance to an arbitrary address. -------------------- In file: killbilly.sol:22 selfdestruct(msg.sender) -------------------- Transaction Sequence: Caller: [CREATOR], data: [CONTRACT CREATION], value: 0x0 Caller: [ATTACKER], function: killerize(address), txdata: 0x9fa299ccbebebebebebebebebebebebedeadbeefdeadbeefdeadbeefdeadbeefdeadbeef, value: 0x0 Caller: [ATTACKER], function: activatekillability(), txdata: 0x84057065, value: 0x0 Caller: [ATTACKER], function: commencekilling(), txdata: 0x7c11da20, value: 0x0
Instructions for using Mythril are found on the docs.
For support or general discussions please join the Mythril community on Discord.
Mythril's documentation is contained in the
docs folder and is published to Read the Docs. It is based on Sphinx and can be built using the Makefile contained in the subdirectory:
cd docs make html
This will create a
build output directory containing the HTML output. Alternatively, PDF documentation can be built with
make latexpdf. The available output format options can be seen with
Visit the Smart Contract Vulnerability Classification Registry to find detailed information and remediation guidance for the vulnerabilities reported.