{"id":13421679,"url":"https://github.com/crytic/ethersplay","last_synced_at":"2025-03-27T13:12:34.562Z","repository":{"id":39969589,"uuid":"107464076","full_name":"crytic/ethersplay","owner":"crytic","description":"EVM dissassembler","archived":false,"fork":false,"pushed_at":"2023-09-04T20:46:29.000Z","size":2078,"stargazers_count":824,"open_issues_count":9,"forks_count":117,"subscribers_count":40,"default_branch":"master","last_synced_at":"2024-05-18T20:41:09.409Z","etag":null,"topics":["binary-ninja","disassembler","ethereum","evm"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crytic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-10-18T21:17:19.000Z","updated_at":"2024-05-04T09:12:30.000Z","dependencies_parsed_at":"2024-01-13T10:12:03.485Z","dependency_job_id":"6a326413-dd3a-4ac0-b5c8-196886c71b52","html_url":"https://github.com/crytic/ethersplay","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fethersplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fethersplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fethersplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crytic%2Fethersplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crytic","download_url":"https://codeload.github.com/crytic/ethersplay/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245850359,"owners_count":20682647,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary-ninja","disassembler","ethereum","evm"],"created_at":"2024-07-30T23:00:28.130Z","updated_at":"2025-03-27T13:12:34.542Z","avatar_url":"https://github.com/crytic.png","language":"Python","readme":"# ethersplay\nBinary Ninja plugin which enables an EVM disassembler and related analysis tools.\n\n![Example](images/example.png)\n\n- [Installation](#installation)\n- [How to use](#how-to-use)\n- [Automatic Analyses](#automatic-analyses)\n- [Plugins](#plugins)\n- [Known issues](#known-issues)\n\n## Installation\n**Ethersplay only supports Python \u003e= 3.6.**\n\nEnsure that your Binary Ninja's Python library is set to Python 3.6+. You can change the ScriptingProvider in the Advanced Settings.\n\n### Plugin Manager Installation\n\nIf you install the plugin via the Binary Ninja Plugin Manager, dependency installation should be automatic.\n\n### Manual Installation\n\nInstall the dependencies:\n```console\n$ pip install -r requirements.txt\n```\n\nCreate a symbolic link to the Binary Ninja [plugin folder](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples#loading-plugins).\nE.g., in macOS\n```\ncd ~/Library/Application\\ Support/Binary\\ Ninja/plugins\nln -s \u003cyour_download_location\u003e/ethersplay/ethersplay .\n```\n\nUbuntu:\n```\ncd ~/.binaryninja/plugins\nln -s \u003cyour_download_location\u003e/ethersplay/ethersplay .\n```\n\n## How to Use\n\nEthersplay takes as input the evm bytecode in raw binary format.\n \nTo have the bytecode of a solidity file, use `solc`:\n- `solc --bin-runtime file.sol`: to print the bytecode of the runtime part of the contract (for most of the cases).\n- `solc --bin file.sol`: to print the initialisation bytecode of the contract (constructor),\n\n\n\nExample using `test.sol` with following contents:\n```test.sol:\ncontract Test {\n    uint256 value;\n    function Test() {\n        value = 5;\n    }\n    function set_value(uint256 v) {\n        value = v;\n    }\n    function() payable {}\n}\n```\n\nRun solidity to compile:\n`solc --bin-runtime test.sol`\n\nsolc prints the bytecode to stdout in the format below:\n```\n======= test.sol:Test =======\nBinary of the runtime part:\n60606040523615603d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b0f2b72a146041575b5b5b005b3415604b57600080fd5b605f60048080359060200190919050506061565b005b806000819055505b505600a165627a7a72305820c177a64bf54a26574918ddc2201f7ab2dd8619d6c3ee87ce9aaa1eb0e0b1d4650029\n```\n\nCopy the ascii hex string, and then create a new file in Binary Ninja. Right-click and select `Paste From -\u003e 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.\n\n`test.evm` can now be loaded into Binary Ninja.\n\n**Note:** The file must end in `.evm` to be recognized as an EVM bytecode binary file.\n\n## Plugins\n\n### Render Flowgraphs\nGenerates a clean control flow graph of all functions.\n\nBefore:\n\n![before](images/cfg_before.png)\n\nAfter:\n\n![!after](images/cfg_after.png)\n\n### Manticore coverage\nColors the basic blocks explored through Manticore (using the `visited.txt` or `*.trace` files).\n","funding_links":[],"categories":["Software Development","Reverse engineering","Developer Tools","dApps directory","Roadmap"],"sub_categories":["Risk Management","Tools","Dissassemblers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrytic%2Fethersplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrytic%2Fethersplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrytic%2Fethersplay/lists"}