All Projects → crytic → Ethersplay

crytic / Ethersplay

Licence: agpl-3.0
EVM dissassembler

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Ethersplay

Ethabi
Encode and decode smart contract invocations
Stars: ✭ 172 (-43.42%)
Mutual labels:  ethereum, evm
Remix Project
Remix is a browser-based compiler and IDE that enables users to build Ethereum contracts with Solidity language and to debug transactions.
Stars: ✭ 225 (-25.99%)
Mutual labels:  ethereum, evm
Securify
[DEPRECATED] Security Scanner for Ethereum Smart Contracts
Stars: ✭ 177 (-41.78%)
Mutual labels:  ethereum, evm
Evmc
EVMC – Ethereum Client-VM Connector API
Stars: ✭ 137 (-54.93%)
Mutual labels:  ethereum, evm
Bamboo
Bamboo see https://github.com/cornellblockchain/bamboo
Stars: ✭ 300 (-1.32%)
Mutual labels:  ethereum, evm
Rattle
evm binary static analysis
Stars: ✭ 152 (-50%)
Mutual labels:  ethereum, evm
Pyquarkchain
Python implementation of QuarkChain
Stars: ✭ 194 (-36.18%)
Mutual labels:  ethereum, evm
Openzeppelin Contracts
OpenZeppelin Contracts is a library for secure smart contract development.
Stars: ✭ 14,308 (+4606.58%)
Mutual labels:  ethereum, evm
ethereum-dasm
An ethereum evm bytecode disassembler and static/dynamic analysis tool
Stars: ✭ 121 (-60.2%)
Mutual labels:  disassembler, evm
Sputnikvm
A Blockchain Virtual Machine
Stars: ✭ 238 (-21.71%)
Mutual labels:  ethereum, evm
Remix Ide
Documentation for Remix IDE
Stars: ✭ 1,768 (+481.58%)
Mutual labels:  ethereum, evm
Monax
DEPRECATED. To be removed December, 2018 (use monax/bosmarmot)
Stars: ✭ 269 (-11.51%)
Mutual labels:  ethereum, evm
Chains
provides metadata for networkIDs and chainIDs
Stars: ✭ 117 (-61.51%)
Mutual labels:  ethereum, evm
Evmone
Fast Ethereum Virtual Machine implementation
Stars: ✭ 162 (-46.71%)
Mutual labels:  ethereum, evm
Hevm
(OLD REPO) A debug-oriented Ethereum VM (EVM)
Stars: ✭ 114 (-62.5%)
Mutual labels:  ethereum, evm
Armors Solidity
Armors-solidity is a framework to build secure smart contracts on Ethereum.
Stars: ✭ 184 (-39.47%)
Mutual labels:  ethereum, evm
Chaingear
The consensus computer driven database framework
Stars: ✭ 83 (-72.7%)
Mutual labels:  ethereum, evm
Evm2wasm
[ORPHANED] Transcompiles EVM code to eWASM
Stars: ✭ 96 (-68.42%)
Mutual labels:  ethereum, evm
Evm Tools
Ethereum Virtual Machine tools and guide
Stars: ✭ 238 (-21.71%)
Mutual labels:  ethereum, evm
Octopus
Security Analysis tool for WebAssembly module (wasm) and Blockchain Smart Contracts (BTC/ETH/NEO/EOS)
Stars: ✭ 261 (-14.14%)
Mutual labels:  ethereum, disassembler

ethersplay

Binary Ninja plugin which enables an EVM disassembler and related analysis tools.

Example

Installation

Ethersplay only supports Python >= 3.6.

Ensure that your Binary Ninja's Python library is set to Python 3.6+. You can change the ScriptingProvider in the Advanced Settings.

Install the dependencies:

$ pip install -r requirements.txt

Create a symbolic link to the Binary Ninja plugin folder. E.g., in macOS

cd ~/Library/Application\ Support/Binary\ Ninja/plugins
ln -s <your_download_location>/ethersplay/ethersplay .

Ubuntu:

cd ~/.binaryninja/plugins
ln -s <your_download_location>/ethersplay/ethersplay .

How to Use

Ethersplay takes as input the evm bytecode in raw binary format.

To have the bytecode of a solidity file, use solc:

  • solc --bin-runtime file.sol: to print the bytecode of the runtime part of the contract (for most of the cases).
  • solc --bin file.sol: to print the initialisation bytecode of the contract (constructor),

Example using test.sol with following contents:

contract Test {
    uint256 value;
    function Test() {
        value = 5;
    }
    function set_value(uint256 v) {
        value = v;
    }
    function() payable {}
}

Run solidity to compile: solc --bin-runtime test.sol

solc prints the bytecode to stdout in the format below:

======= test.sol:Test =======
Binary of the runtime part:
60606040523615603d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b0f2b72a146041575b5b5b005b3415604b57600080fd5b605f60048080359060200190919050506061565b005b806000819055505b505600a165627a7a72305820c177a64bf54a26574918ddc2201f7ab2dd8619d6c3ee87ce9aaa1eb0e0b1d4650029

Copy the ascii hex string, and then create a new file in Binary Ninja. Right-click and select Paste From -> Raw Hex. The output should look identical to the earlier example image. Save this file as test.evm and close it. Alternatively, paste the ascii hex string into a new text file, and run the utils/convert_bytecode.py on that file.

test.evm can now be loaded into Binary Ninja.

Note: The file must end in .evm to be recognized as an EVM bytecode binary file.

Plugins

Render Flowgraphs

Generates a clean control flow graph of all functions.

Before: before

After: !after

Manticore coverage

Colors the basic blocks explored through Manticore (using the visited.txt or *.trace files).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].