UEFI_RETool – A Tool For UEFI Firmware Reverse Engineering

A tool for UEFI firmware reverse engineering.
UEFI firmware analysis with uefi_retool.py script
Usage:
- Copy 
ida_plugin/uefi_analyser.pyscript andida_plugin/uefi_analyserdirectory to IDA plugins directory - Edit 
config.jsonfilePE_DIRis a directory that contains all executable images from the UEFI firmwareDUMP_DIRis a directory that contains all components from the firmware filesystemLOGS_DIRis a directory for logsIDA_PATHandIDA64_PATHare paths to IDA Pro executable files
 - Run 
pip install -r requirements.txt - Run 
python uefi_retool.pycommand to display the help message 
Commands
python uefi_retool.py
Usage: uefi_retool.py [OPTIONS] COMMAND [ARGS]...
Options:
  --help  Show this message and exit.
Commands:
  get-images  Get executable images from UEFI firmware.
  get-info    Analyze the entire UEFI firmware.
  get-pp      Get a list of proprietary protocols in the UEFI firmware.
get-images
python uefi_retool.py get-images --help
Usage: uefi_retool.py get-images [OPTIONS] FIRMWARE_PATH
  Get executable images from UEFI firmware. Images are stored in "modules"
  directory.
Options:
  --help  Show this message and exit.
Example:
python uefi_retool.py get-images test_fw/fw-tp-x1-carbon-5th.bin
get-info
python uefi_retool.py get-info --help
Usage: uefi_retool.py get-info [OPTIONS] FIRMWARE_PATH
  Analyze the entire UEFI firmware. The analysis result is saved to .json
  file.
Options:
  -w, --workers INTEGER  Number of workers (8 by default).
  --help                 Show this message and exit.
Example:
python uefi_retool.py get-info -w 6 test_fw/fw-tp-x1-carbon-5th.bin
get-pp
python uefi_retool.py get-pp --help
Usage: uefi_retool.py get-pp [OPTIONS] FIRMWARE_PATH
  Get a list of proprietary protocols in the UEFI firmware. The result is
  saved to .json file.
Options:
  -w, --workers INTEGER  Number of workers (8 by default).
  --help                 Show this message and exit.
Example:
python uefi_retool.py get-pp -w 6 test_fw/fw-tp-x1-carbon-5th.bin
Additional tools
tools/update_edk2_guids.pyis a script that updates protocol GUIDs list fromedk2project
IDA plugin
IDA plugin for UEFI analysis
Analyser & Protocol explorer
Usage
-   Copy 
uefi_analyseranduefi_analyser.pyto your%IDA_DIR%/pluginsdirectory -   Open the executable UEFI image in IDA and go to 
Edit->Plugins->UEFI analyser(alternatively, you can use the key combinationCtrl+Alt+U) 
Example
Before analysis

After analysis

Protocol explorer window

Dependency browser & Dependency graph
Usage
-   Analyse the firmware using uefi_retool.py
python uefi_retool.py get-info FIRMWARE_PATH -   Load 
<LOGS_DIR>/<FIRMWARE_NAME>-all-info.jsonfile to IDA (File->UEFI_RETool...)
alternatively, you can use the key combinationCtrl+Alt+J) 
Example
Dependency browser window

Dependency graph

Similar works
- ida-efiutils
 - EFISwissKnife
 - ghidra-firmware-utils
 
Download UEFI_RETool
If you like the site, please consider joining the telegram channel or supporting us on Patreon using the button below.


