New to this so here we go. I want to reverse engineer a x86-64 desktop UEFI to add hardware support.

Since I have the actual hardware available, are there debug interfaces that run via actual hardware & would produce a better output than say...working through HexRays or OllyDbg?

Along similar lines, are there debuggers than can be fed useful information about the system being emulated? In the case of a UEFI, I'm thinking chipset information, where graphics are coming from, connected components, types of ports, etc.



The ideal option is to use a hardware debugger like Intel XDP or Arium, however they are very expensive, available only under NDA and generally require special development boards with populated debug port.

In the recent platforms, there is a lightweight option of DCI (Direct Connect Interface) available via the USB3 port. In theory it again requires (a little more affordable) Intel hardware like Closed Chasssis Adapter but some people figured out how to enable it on consumer hardware using a regular USB3 cable. Once enabled, you can debug the hardware on the lowest level using Intel System Studio.

Hardware debug alternatives:

  • the SerialICE project allows you to emulate firmware in QEMU and forward hardware accesses to the real hardware via serial port to a small stub running on the target machine.
  • the SourceLevelDebugPkg module from EDK2 can, despite the name, be used to debug even firmware without source code info. Follow the directions here.
  • Why is it under NDA?
    – flarn2006
    Jan 14 '21 at 21:26
  • @flarn2006 I’m not sure but Intel loves NDAs
    – Igor Skochinsky
    Jan 14 '21 at 21:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.