{"id":13631474,"url":"https://github.com/nevillegrech/MadMax","last_synced_at":"2025-04-17T22:30:59.935Z","repository":{"id":44122843,"uuid":"147000386","full_name":"nevillegrech/MadMax","owner":"nevillegrech","description":"Ethereum Static Vulnerability Detector for Gas-Focussed Vulnerabilities","archived":false,"fork":false,"pushed_at":"2022-12-07T03:18:59.000Z","size":1145,"stargazers_count":131,"open_issues_count":2,"forks_count":16,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-01T22:48:38.244Z","etag":null,"topics":["blockchain-technology","decompiler","ethereum","security-tools"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nevillegrech.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":"CODEOWNERS","security":null,"support":null}},"created_at":"2018-09-01T13:25:32.000Z","updated_at":"2024-07-29T07:54:34.000Z","dependencies_parsed_at":"2023-01-24T03:30:14.571Z","dependency_job_id":null,"html_url":"https://github.com/nevillegrech/MadMax","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevillegrech%2FMadMax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevillegrech%2FMadMax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevillegrech%2FMadMax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevillegrech%2FMadMax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nevillegrech","download_url":"https://codeload.github.com/nevillegrech/MadMax/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223768478,"owners_count":17199353,"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":["blockchain-technology","decompiler","ethereum","security-tools"],"created_at":"2024-08-01T22:02:26.961Z","updated_at":"2024-11-08T23:30:48.005Z","avatar_url":"https://github.com/nevillegrech.png","language":null,"funding_links":[],"categories":["Others","Tools"],"sub_categories":[],"readme":"Note: you need to clone this repo using the `--recursive` flag since this repo has submodules, e.g.,\n\n`git clone git@github.com:nevillegrech/MadMax.git --recursive`\n\n# MadMax \n![License](https://img.shields.io/github/license/nevillegrech/MadMax) ![GitHub Repo stars](https://img.shields.io/github/stars/nevillegrech/MadMax) [![Twitter Follow](https://img.shields.io/twitter/follow/neville_grech.svg?style=social)](https://twitter.com/neville_grech)\n\nMadmax consists of a series of analyses and queries that find gas-focussed vulnerabilities in Ethereum smart contracts. The analyses are performed on the [Gigahose](https://github.com/nevillegrech/gigahorse-toolchain) IR, which is lifted from Ethereum bytecode. The first version of MadMax used [Vandal](https://github.com/usyd-blockchain/vandal).\n\n# How to use\nFirst follow the instructions in [gigahorse-toolchain](gigahorse-toolchain/README.md) for instructions on installation of [Gigahorse](https://github.com/nevillegrech/gigahorse-toolchain). In a nutshell, this requires the installation of the Souffle Datalog engine, custom functors and Boost.\n\nIn order to run MadMax using Gigahorse, you can use the following incantation:\n\n`gigahorse-toolchain/gigahorse.py -C madmax.dl \u003ccontract.hex\u003e`\n\nWhere `\u003ccontract.hex\u003e` is a compiled Ethereum contract, or a directory of contracts. If you're running this for the first time it will take longer due to compilation of Datalog files. The output of the analysis results can be found under `.temp/**/out/*.csv` and `results.json`. A summary is also printed to the screen.\n\nTo see whether an individual contract is flagged or not if, check whether there are any entries inside the `WalletGriefing`, `UnboundedMassOp` and `OverflowLoopIterator` relations.\n\n\n# Live Deployment\nSome of the techniques developed in the MadMax project are now used in [Dedaub Watchdog](https://dedaub.com/watchdog).\n\n# Publications\n\nMadMax: surviving out-of-gas conditions in Ethereum smart contracts\nNeville Grech, Michael Kong, Anton Jurisevic, Lexi Brent, Bernhard Scholz, and Yannis Smaragdakis\nProceedings of the ACM in Programming Languages (OOPSLA) 2018\n[PDF](https://www.nevillegrech.com/assets/pdf/madmax-oopsla18.pdf)\n\n🏆 Distinguished Paper 🏆\n\nMadMax: Analyzing the Out-of-Gas World of Smart Contracts\nNeville Grech, Michael Kong, Anton Jurisevic, Lexi Brent, Bernhard Scholz, and Yannis Smaragdakis\nCommunications of the ACM 2020\n[PDF](https://www.nevillegrech.com/assets/pdf/madmax-cacm.pdf)\n\n🏆 CACM research highlight 🏆\n\n\n[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/LENrSCeoTqg/0.jpg)](https://www.youtube.com/watch?v=LENrSCeoTqg)\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnevillegrech%2FMadMax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnevillegrech%2FMadMax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnevillegrech%2FMadMax/lists"}