{"id":13339044,"url":"https://github.com/p-state/ida-efitools2","last_synced_at":"2025-03-11T12:31:14.120Z","repository":{"id":46294717,"uuid":"304399412","full_name":"p-state/ida-efitools2","owner":"p-state","description":"IDA plugin for extending UEFI reverse engineering capabilities","archived":false,"fork":false,"pushed_at":"2021-11-01T12:53:26.000Z","size":71,"stargazers_count":55,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-24T00:22:24.151Z","etag":null,"topics":["ida","ida-plugin","idapython","uefi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/p-state.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-15T17:23:54.000Z","updated_at":"2024-09-23T13:18:16.000Z","dependencies_parsed_at":"2022-08-20T11:30:06.286Z","dependency_job_id":null,"html_url":"https://github.com/p-state/ida-efitools2","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/p-state%2Fida-efitools2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-state%2Fida-efitools2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-state%2Fida-efitools2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p-state%2Fida-efitools2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p-state","download_url":"https://codeload.github.com/p-state/ida-efitools2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243034820,"owners_count":20225411,"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":["ida","ida-plugin","idapython","uefi"],"created_at":"2024-07-29T19:19:00.759Z","updated_at":"2025-03-11T12:31:12.928Z","avatar_url":"https://github.com/p-state.png","language":"Python","readme":"# About\r\nIt is an IDA plugin for extending UEFI reverse engineering capabilities. Based on [ida-efitools](https://github.com/danse-macabre/ida-efitools) with a bunch of fixes and new features.  \r\nWorks with both Python 2 and Python 3. Supports outdated versions of IDA Pro 7.x with no guarantees.\r\n\r\n# Features\r\n* GUIDs defining\r\n* Structures propagating (registers, xrefs, stack vars)\r\n* Protocols \u0026 interfaces identification\r\n* Unknown protocols initialization\r\n\r\n# Extended features\r\n* It can be used as a plugin and as a script.\r\n* Automatically imports custom C declarations (structs, enums, unions, typedefs) from `efitools2/types` directory\r\n* Sets permissions of code segment to RWE (to fix incorrect dead code elimination in decompiler view)\r\n\r\n### Plugin-only features\r\n* Provides ability to sync external types\r\n* Prints and copies to clipboard selected EFI_GUID from disassembler view\r\n* Extracts EFI_GUID from local variable assignments\r\n\r\n# Important notes\r\n* behemoth.til is rejected in favor of IDA's uefi.til and uefi64.til\r\n* Do not use uefi(64).til from IDA 7.3 because it has errors\r\n\r\n# Usage\r\n### As script\r\nJust run `efitools2/efitools.py` from IDA.\r\n\r\n### As plugin\r\nHotkeys:\r\n\r\n* **Ctrl-Alt-E** - does all the magic\r\n* **Ctrl-Alt-G** (on data) - print and copy EFI_GUID at current cursor location\r\n* **Ctrl-Alt-G** (on code) - extract and copy EFI_GUID from local variable assignment (set cursor at `EFI_GUID.data1` assignment)\r\n* **F5** (on Local Types window) - synchronize local types from `types` folder\r\n\r\n# Adjustment\r\n* Hotkeys can be configured in `ida-efitool2.py` file.\r\n* A few preferences can be found in `efitools2/efitools.py` file.\r\n* Custom GUIDs should be placed within `efitools2/guids/custom.ini` file.\r\n* Custom protocols should be placed inside `efitools2/types` folder. See available examples.\r\n\r\n# How to export custom types\r\nIt's IDA's built-in feature. Just open the context menu for the type in Local Types window and select 'Export to header file' action.\r\n\r\n# Prerequisites\r\n* `pip install future` - For Python 2 only.\r\n* `pip install clipboard` - If you want to automatically copy EFI_GUID contents to the clipboard.\r\n\r\n# Plugin installation\r\nJust copy `ida-efitools2.py` file and `efitools2` folder to IDA's plugins directory.\r\n\r\n# Credits\r\n[@snare](https://github.com/snare) for original code base of [ida-efiutils](https://github.com/snare/ida-efiutils).  \r\n[@danse-macabre](https://github.com/danse-macabre) for rewritten from scratch [ida-efitools](https://github.com/danse-macabre/ida-efitools).  \r\n[@djpohly](https://github.com/djpohly), [@al3xtjames](https://github.com/al3xtjames), [@vutung2311](https://github.com/vutung2311) for contributions (forks).  \r\n[@p-state](https://github.com/vutung2311) (me) for breathing a new life into\r\nthis.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp-state%2Fida-efitools2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp-state%2Fida-efitools2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp-state%2Fida-efitools2/lists"}