{"id":20101022,"url":"https://github.com/fkie-cad/dewolf","last_synced_at":"2026-04-02T20:53:47.438Z","repository":{"id":38838707,"uuid":"433743529","full_name":"fkie-cad/dewolf","owner":"fkie-cad","description":"A research decompiler implemented as a Binary Ninja plugin.","archived":false,"fork":false,"pushed_at":"2026-03-25T04:09:19.000Z","size":4811,"stargazers_count":220,"open_issues_count":57,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-03-26T08:56:55.844Z","etag":null,"topics":["binary-analysis","binaryninja","binaryninja-plugin","decompilation","dewolf","reverse-engineering","software-analysis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fkie-cad.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-01T08:29:24.000Z","updated_at":"2026-03-19T16:54:39.000Z","dependencies_parsed_at":"2023-10-16T19:13:38.503Z","dependency_job_id":"c7522c34-5321-449a-987c-925728a492df","html_url":"https://github.com/fkie-cad/dewolf","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/fkie-cad/dewolf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Fdewolf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Fdewolf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Fdewolf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Fdewolf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fkie-cad","download_url":"https://codeload.github.com/fkie-cad/dewolf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Fdewolf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31316008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-analysis","binaryninja","binaryninja-plugin","decompilation","dewolf","reverse-engineering","software-analysis"],"created_at":"2024-11-13T17:22:57.158Z","updated_at":"2026-04-02T20:53:47.414Z","avatar_url":"https://github.com/fkie-cad.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Pipeline](https://github.com/fkie-cad/dewolf/actions/workflows/pipeline.yml/badge.svg)](https://github.com/fkie-cad/dewolf/actions/workflows/pipeline.yml)\n[![Extended Pipeline](https://github.com/fkie-cad/dewolf/actions/workflows/extended-pipeline.yml/badge.svg)](https://github.com/fkie-cad/dewolf/actions/workflows/extended-pipeline.yml)\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n\n\n# dewolf\n\n\u003cimg src=\"assets/logo.png\" width=\"200\"\u003e\n\ndewolf is a research decompiler we developed during a research cooperation from 2019 to 2021 between Germany (Fraunhofer FKIE) and Singapore (DSO National Laboratories).\n\nThe restructuring of dewolf is based on the former DREAM/DREAM++ approach [Yakdan et al. NDSS 2015, IEEE (SP) 2016].\n\nThe decompiler dewolf is implemented as a plugin for Binary Ninja and uses their Medium-Level intermediate language as the starting point.\nAlthough we consider dewolf to be pretty stable, it is still a research prototype and not extensively optimized for production use.\nConsequently, you will likely observe a few bugs or even decompilation failures when applying dewolf on real-world binaries.\n\n**If you encounter any bugs, please report them to us so that we can further improve dewolf. :)**\n\n___\n## Installation\n\n### Dependencies\nBefore we start, please make sure you have the following dependencies installed and available on your computer:\n\n- At least [Python 3.10](https://www.python.org/)\n- Latest stable release of [Binary Ninja (\u003e=3.4)](https://binary.ninja/)\n- [astyle](https://code.tools/man/1/astyle/) for proper indentation of the decompiled code\n- [libgraph-easy-perl](https://packages.ubuntu.com/source/focal/libgraph-easy-perl) only required for printing ASCII graphs\n\nUnder **Linux** (Ubuntu / Debian), you can use the following command to install both **astyle** and **libgraph-easy-perl**:\n\n```bash\nsudo apt install astyle libgraph-easy-perl\n```\nUnder **Windows**, please make sure the **astyle**-binary has been added to the environment Path.\n\n### Binary Ninja Plugin\nFollow the steps below to setup dewolf as a GUI plugin for Binary Ninja.\nAfterwards, you will be able to inspect decompiled code from a Binary Ninja dock.\n\n#### Step 1:\nClone the dewolf repository into the Binary Ninja plugin folder which is located in one of the following paths corresponding to your operating system:\n\n**Linux:** `~/.binaryninja/plugins`\n**MacOS:** `~/Library/Application Support/Binary Ninja`\n**Windows:** `%APPDATA%\\Binary Ninja`\n\n**Attention:**\nIf you want to use a python virtual environment, make sure it is enabled for the next steps and also when starting Binary Ninja.\n\n#### Step 2:\nInstall dewolf's python dependencies with:\n\n```bash\npip install -r requirements.txt\n```\n\n#### Step 3:\nInstall Binary Ninja python API with:\n\n```bash\npython \u003cbinaryninja_path\u003e/scripts/install_api.py [--install-on-pyenv if using virtualenv]\n```\n\n**Warning:** Changes made to the dewolf plugin only comes into effect after restarting the Binary Ninja GUI.\n\n\n___\n## Usage\n\nThe dewolf decompiler can be used from both the command line and within Binary Ninja.\n\n### GUI\nAfter enabling the dewolf decompilation widget via **Tools \u003e dewolf decompiler**, the decompiled code for the currently active symbol will be displayed.\nIn the dewolf widget, it is possible to navigate through functions by double-clicking them.\n\nThe automatic decompilation of selected functions can be toggled with the *follow* button.\nDecompiled code is cached and can be generated again with the *decompile* button, e.g. after patching instructions in the binary view.\n\n![Widget](https://user-images.githubusercontent.com/12004321/145460476-f869e5cc-d585-4f53-8920-6ecfa4b346d5.png)\n\n### CLI\nFor batch decompilation, it may be more convenient to utilize dewolf as a command line program.\nIf you would like to use dewolf from the command line, you can invoke decompilation of an entire binary with the following command:\n\n```bash\npython decompile.py \u003cpath/to/binary\u003e\n```\n\nIf you wish to decompile a specific function, the function name can be provided as the second parameter:\n\n```bash\npython decompile.py \u003cpath/to/binary\u003e \u003cfunction_name\u003e\n```\n\nBy default, the generated code is displayed on the console.\nIf you want to write the output to a file instead, you can specify it with the `--output/-o` flag.\nPlease use the `--help` flag for more information.\n\n___\n## Configuration\ndewolf has multiple configuration options of which some are configurable via the GUI.\n\n### via GUI\nYou can configure dewolf from the Binary Ninja GUI by navigating to **Edit \u003e Preferences \u003e Settings** or by pressing \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e.\nSearch for **dewolf** in the search bar and all dewolf related settings will be displayed.\n\n**Warning:** Configurations made through Binary Ninja will not be taken into account when dewolf is started via command line interface. To configure dewolf when started via CLI, do as described in the following section.\n\n### via CLI\nTo apply settings for command line mode or using advanced settings not shown in the GUI, you can provide a *config.json* file in the decompiler root folder.\nThe format of such a config file has to be as follows:\n\n```\n{\n  \"section.key\": value,\n  \"expression-propagation.maximum_instruction_complexity\": 5\n}\n```\nAll available settings can be found in `decompiler/util/default.json`.\n\n___\n## Support\n\nIf you have any suggestions, or bug reports, please create an issue in the Issue Tracker.\n\nIn case you have any questions or other problems, feel free to send an email to:\n\n[dewolf@fkie.fraunhofer.de](mailto:dewolf@fkie.fraunhofer.de).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffkie-cad%2Fdewolf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffkie-cad%2Fdewolf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffkie-cad%2Fdewolf/lists"}