{"id":13755596,"url":"https://github.com/yeggor/uefi_retool","last_synced_at":"2025-05-10T01:31:27.100Z","repository":{"id":45211707,"uuid":"157477242","full_name":"yeggor/uefi_retool","owner":"yeggor","description":"A tool for UEFI firmware reverse engineering","archived":false,"fork":false,"pushed_at":"2023-08-07T19:01:32.000Z","size":55677,"stargazers_count":310,"open_issues_count":0,"forks_count":55,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-02-12T16:11:25.236Z","etag":null,"topics":["firmware","firmware-tools","ida-plugin","idapython","reverse-engineering","uefi"],"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/yeggor.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":"2018-11-14T02:19:12.000Z","updated_at":"2024-02-02T10:38:46.000Z","dependencies_parsed_at":"2024-01-13T03:01:14.189Z","dependency_job_id":null,"html_url":"https://github.com/yeggor/uefi_retool","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/yeggor%2Fuefi_retool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeggor%2Fuefi_retool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeggor%2Fuefi_retool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yeggor%2Fuefi_retool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yeggor","download_url":"https://codeload.github.com/yeggor/uefi_retool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253349992,"owners_count":21894814,"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":["firmware","firmware-tools","ida-plugin","idapython","reverse-engineering","uefi"],"created_at":"2024-08-03T10:00:57.620Z","updated_at":"2025-05-10T01:31:27.093Z","avatar_url":"https://github.com/yeggor.png","language":"Python","funding_links":[],"categories":["\u003ca id=\"e5e403123c70ddae7bd904d3a3005dbb\"\u003e\u003c/a\u003eELF","Tools :hammer:"],"sub_categories":["\u003ca id=\"1c698e298f6112a86c12881fbd8173c7\"\u003e\u003c/a\u003eSwift"],"readme":"# uefi_retool\r\n\r\nA tool for UEFI firmware reverse engineering.\r\n\r\n## UEFI firmware analysis with uefi_retool script\r\n\r\nUsage:\r\n\r\n- Copy `ida_plugin/uefi_analyser.py` script and `ida_plugin/uefi_analyser` directory to IDA plugins directory\r\n- Edit `config.json` file\r\n  - `PE_DIR` is a directory that contains all executable images from the UEFI firmware\r\n  - `DUMP_DIR` is a directory that contains all components from the firmware filesystem\r\n  - `LOGS_DIR` is a directory for logs\r\n  - `IDA_PATH` and `IDA64_PATH` are paths to IDA Pro executable files\r\n- Run `pip install -r requirements.txt`\r\n- Run `python uefi_retool.py` command to display the help message\r\n\r\n### Commands\r\n\r\n```bash\r\npython uefi_retool.py\r\n```\r\n\r\n```\r\nUsage: uefi_retool.py [OPTIONS] COMMAND [ARGS]...\r\n\r\nOptions:\r\n  --help  Show this message and exit.\r\n\r\nCommands:\r\n  get-images  Get executable images from UEFI firmware.\r\n  get-info    Analyze the entire UEFI firmware.\r\n  get-pp      Get a list of proprietary protocols in the UEFI firmware.\r\n```\r\n\r\n### get-images\r\n\r\n```bash\r\npython uefi_retool.py get-images --help\r\n```\r\n\r\n```\r\nUsage: uefi_retool.py get-images [OPTIONS] FIRMWARE_PATH\r\n\r\n  Get executable images from UEFI firmware. Images are stored in \"modules\"\r\n  directory.\r\n\r\nOptions:\r\n  --help  Show this message and exit.\r\n```\r\n\r\nExample:\r\n\r\n```bash\r\npython uefi_retool.py get-images test_fw/fw-tp-x1-carbon-5th.bin\r\n```\r\n\r\n### get-info\r\n\r\n```bash\r\npython uefi_retool.py get-info --help\r\n```\r\n\r\n```\r\nUsage: uefi_retool.py get-info [OPTIONS] FIRMWARE_PATH\r\n\r\n  Analyze the entire UEFI firmware. The analysis result is saved to .json\r\n  file.\r\n\r\nOptions:\r\n  -w, --workers INTEGER  Number of workers (8 by default).\r\n  --help                 Show this message and exit.\r\n```\r\n\r\nExample:\r\n\r\n```bash\r\npython uefi_retool.py get-info -w 6 test_fw/fw-tp-x1-carbon-5th.bin\r\n```\r\n\r\n### get-pp\r\n\r\n```bash\r\npython uefi_retool.py get-pp --help\r\n```\r\n\r\n```\r\nUsage: uefi_retool.py get-pp [OPTIONS] FIRMWARE_PATH\r\n\r\n  Get a list of proprietary protocols in the UEFI firmware. The result is\r\n  saved to .json file.\r\n\r\nOptions:\r\n  -w, --workers INTEGER  Number of workers (8 by default).\r\n  --help                 Show this message and exit.\r\n```\r\n\r\nExample:\r\n\r\n```bash\r\npython uefi_retool.py get-pp -w 6 test_fw/fw-tp-x1-carbon-5th.bin\r\n```\r\n\r\n## Additional tools\r\n\r\n- `tools/update_edk2_guids.py` is a script that updates protocol GUIDs list from `edk2` project\r\n\r\n## IDA plugin\r\n\r\n[IDA plugin for UEFI analysis](https://github.com/yeggor/uefi_retool/tree/master/ida_plugin)\r\n\r\n## Similar works\r\n\r\n- [ida-efiutils](https://github.com/snare/ida-efiutils)\r\n- [EFISwissKnife](https://github.com/gdbinit/EFISwissKnife)\r\n- [ghidra-firmware-utils](https://github.com/al3xtjames/ghidra-firmware-utils)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyeggor%2Fuefi_retool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyeggor%2Fuefi_retool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyeggor%2Fuefi_retool/lists"}