{"id":20679030,"url":"https://github.com/contractshark/raplus","last_synced_at":"2026-05-04T18:31:24.910Z","repository":{"id":103265677,"uuid":"353111888","full_name":"contractshark/RAplus","owner":"contractshark","description":"RA+ - EVM Exploit generator","archived":false,"fork":false,"pushed_at":"2021-08-03T07:49:12.000Z","size":351,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-17T15:21:36.437Z","etag":null,"topics":["bytecode","dissassembler","ethereum","evm","solidity"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/contractshark.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-30T19:03:00.000Z","updated_at":"2023-08-27T03:42:43.000Z","dependencies_parsed_at":"2023-10-15T03:22:36.710Z","dependency_job_id":null,"html_url":"https://github.com/contractshark/RAplus","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/contractshark%2FRAplus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contractshark%2FRAplus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contractshark%2FRAplus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contractshark%2FRAplus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contractshark","download_url":"https://codeload.github.com/contractshark/RAplus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242911484,"owners_count":20205500,"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":["bytecode","dissassembler","ethereum","evm","solidity"],"created_at":"2024-11-16T21:23:41.796Z","updated_at":"2026-05-04T18:31:24.857Z","avatar_url":"https://github.com/contractshark.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ra+\n\n*Dynamically determine EVM exploits*\n\n## Requirements\n- Python3 (confirmed 3.6)\n- Python modules\n    - z3-solver\n    - pysha3 (used for convenience to represent sha3 output)\n- Graphviz (required to draw the execution path)\n\n\n## Usage\n\n1. Install required dependencies \n\n2. Run the application\n\n```bash\npython3 ra.py\n```\n\n3. Give some EVM bytecode to standard input.\n\n```\n606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633ccfd60b14610046575b600080fd5b341561005157600080fd5b61005961005b565b005b3373ffffffffffffffffffffffffffffffffffffffff166000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180602001905060006040518083038185875af192505050156101155760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5600a165627a7a72305820e598d1a576b5047521cba20260ee9579fee29311bfbb5623191a49ca74a1e4380029\n```\n\n4. If the given code has re-entrancy, RA will generate the combination of functions which may cause re-entrancy as `tuple` of function IDs. For example:\n \n`('0x3ccfd60b', '0x3ccfd60b', True, 6.267011556017678)`\n\nIn this case, `'0x3ccfd60b'` is function ID of the first called function, and `'0x3ccfd60b'` is function ID of the second called (called by malicious contract) function.\n\n## Limitations\n- RA cannnot create new contract whose code will be determine dynamically (such part will be symbol variable). This is due to the data type which represents smart contracts. Ra just uses a string as EVM bytecode. Thus, if it is replaced with python list, or temporally fixes such dynamic code, you can analyse such contracts.\n\n- Some EVM opcodes are not implemented in RA's VM. (on roadmap).\n\n## License\nThis program is released under the MIT license. Author: [wanidon](https://github.com/wanidon)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontractshark%2Fraplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontractshark%2Fraplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontractshark%2Fraplus/lists"}