Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Go Ethereum | 41,662 | 431 | 1,920 | 4 hours ago | 655 | September 15, 2022 | 318 | lgpl-3.0 | Go | |
Official Go implementation of the Ethereum protocol | ||||||||||
Openzeppelin Contracts | 21,798 | 51 | 1,033 | 11 hours ago | 63 | September 07, 2022 | 179 | mit | JavaScript | |
OpenZeppelin Contracts is a library for secure smart contract development. | ||||||||||
Foundry | 5,630 | 6 hours ago | 606 | apache-2.0 | Rust | |||||
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust. | ||||||||||
Chains | 4,786 | 7 hours ago | 65 | mit | Kotlin | |||||
provides metadata for networkIDs and chainIDs | ||||||||||
Aleth | 3,953 | a year ago | 340 | gpl-3.0 | C++ | |||||
Aleth – Ethereum C++ client, tools and libraries | ||||||||||
Manticore | 3,371 | 1 | 1 | 7 days ago | 723 | July 07, 2022 | 261 | agpl-3.0 | Python | |
Symbolic execution tool | ||||||||||
Ethereumjs Monorepo | 2,202 | 5,333 | 2,248 | 4 hours ago | 85 | June 03, 2022 | 153 | TypeScript | ||
Monorepo for the Ethereum VM TypeScript Implementation | ||||||||||
Remix Ide | 2,122 | 10 | 3 | 7 days ago | 44 | July 13, 2020 | 3 | mit | ||
Documentation for Remix IDE | ||||||||||
Echidna | 2,014 | 7 hours ago | 129 | agpl-3.0 | Solidity | |||||
Ethereum smart contract fuzzer | ||||||||||
Py Evm | 1,943 | 27 | 34 | 14 days ago | 68 | January 26, 2022 | 113 | mit | Python | |
A Python implementation of the Ethereum Virtual Machine |
Binary Ninja plugin which enables an EVM disassembler and related analysis tools.
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.
If you install the plugin via the Binary Ninja Plugin Manager, dependency installation should be automatic.
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 .
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.
Generates a clean control flow graph of all functions.
Before:
After:
Colors the basic blocks explored through Manticore (using the visited.txt
or *.trace
files).