Git Product home page Git Product logo

efixplorer's Introduction

License: GPL v3

efiXplorer - IDA plugin for UEFI firmware analysis and reverse engineering automation :octocat:

Contributors:

Supported versions of Hex-Rays products: everytime we focus on last versions of IDA and Decompiler because we try to use most recent features from new SDK releases. That means we tested only on recent versions of Hex-Rays products and do not guarantee stable work on previous generations.

Why not IDApython: all code developed in C++ because it's a more stable and performant way to support a complex plugin and get full power of most recent SDK's features.

Supported Platforms: Windows, Linux and OSX (x86/x64).

overview

efiXplorer Key features

Identify available Boot Services automatically

Annotate Boot Services calls in assembly code automatically

bs

Identify available Runtime Services automatically

Annotate Runtime Services calls in assembly code automatically

rt

Identify available SMM services automatically

Annotate SMM Services calls in assembly code automatically

efiXplorer_new_6

Identify available PEI services automatically

Annotate PEI Services calls in assembly code automatically

efiXplorer_new_6

Identify available EFI Protocols automatically

  • Build the list of EFI Protocols firmware consumes and installes

protocols

Identify known EFI GUID's

  • Build the list of identified EFI GUID's (including protocol names for known GUIDS)

guids

efiXloader Key features

  • efiXloader is an IDA Pro loader module, responsible for processing UEFI drivers within single IDA Pro instance.

loader_1.gif

UEFI drivers entry points identification

  • During UEFI drivers analysis efiXloader identifies each driver's entry.

loader_2.gif

Navigation between different UEFI drivers

  • Each UEFI driver is accessible within single IDA Pro instance for reverse-engineering.

loader_3.gif

UEFI drivers extraction

  • All processed UEFI drivers are dropped into prepared folder.

loader_4.gif

efiXplorer + efiXloader in action

  • All efiXplorer analysis capabilities can be applied to the whole UEFI firmware image (instead of reverse-engineering each single executable in a separate IDA session)

loader_5.gif

SMI handlers identification within the whole firmware

loader_5.gif

Build instruction

We try to make the build process for all supported platforms very simple, just use the build script to automate this process.

Build script

Usage: build.py [OPTIONS] IDASDK_DIR

Options:
  --copy TEXT  path to IDA plugins directory
  --help       Show this message and exit.

example of build process:

./build.py <IDASDK75_DIR>

Compilation with cmake

mkdir build
cd build
cmake .. -DIdaSdk_ROOT_DIR="/path/to/idasdk"
cmake --build . --config Release

efiXloader compilation and installation

The common steps are next.

cd efiXloader
mkdir build
cd build
cmake .. -DIdaSdk_ROOT_DIR="/path/to/idasdk"
cmake --build . --config Release

Installation

efiXplorer

Copy compiled binaries of efiXplorer plugin and guids directory to <IDA_DIR>/plugins. Enjoy!

efiXloader

Copy builds/efiXloader64.dll to <IDA_DIR>/loaders.

Features summary table

Feature \ Bitness 32-bit 64-bit
Boot Services + +
Runtime Services + +
SMM services - +
PEI Services + -
Protocols + +
GUIDS + +
Loader - +

References

efixplorer's People

Contributors

yeggor avatar matrosov avatar p41l avatar rolfrolles avatar isciurus avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.