I came into a problem, where I am unable to use a hardware due to a firmware incompatibility. As I have multiple sources and proofs that the hardware is indeed supported on the hardware level, and it is only a software incompatibility, and I gave up all hope on getting help in other forums, I came to the conclusion I have to reverse engineer myself the code and find the if statement that fucks with me. (Edit : It is an NVME disk in an AHCI slot that I am able to access if that is not the boot disk. There is a dxe module that allows it to be bootable, however I have a very strong feeling that there is an if statement that defacto denies it to be booted from nvme for planned obsolescence)
I have an UEFI file that I managed to get with an SPI programmer from the motherboards MX25l12873F chip, and thats where my knowledge stops.
I know that I am looking for a display output of "2103: Detection error on SSD0 (M.2)" and all information related to NVME.
UEFITool 0.25 is able to find 8 instances of nvme and 1 instance of Detection error in separate dxe modules.
However I feel like I am going so deep that there is no forum specific for my kind of project, and I ran into a few problems: I don't know which disassembler, reverse engineer tool to use, and how to use them. I was trying to go with IDA, but when I searched for nvme, I could find nothing. Another post here mentioned that GHidra is better for these kinds of tasks, but I could not figure out how to correctly load the raw binary. This whole environment is new to me, but what should I do to correctly load in the whole image so I could just go and backtrack from the errors or get a control flow graph that I can follow around and maybe modify that if statement?