Setup IFR of Dell Latitude E4310 A14 BIOS is empty?

Hi everybody,

I just downloaded a copy of the BIOS that is currently installed on my machine (Version A14, [0]), extracted the HDR with this script [1] that was referenced somewhere on the forums here. Afterwards I used PFSExtractor [2] to extract the contained sections from the HDR image.

Then I used the UEFITool to extract a DXE Driver called "Setup" (GUID: 899407D7-99FE-43D8-9A21-79EC328CAC21) from the UEFI image (Filename: section_0_A.14.data) and ran Universal IFR Extractor LS [3] against the extracted body, but this yields an basically empty IFR file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
                                EFI Protocol Detected
--------------------------------------------------------------------------------
 

String Packages
--------------------------------------------------------------------------------
Offset: Language:
--------------------------------------------------------------------------------
0x1A1D8 eng (0x0)
 

Form Sets
--------------------------------------------------------------------------------
Offset: Title:
--------------------------------------------------------------------------------
 

Internal Forms Representation
--------------------------------------------------------------------------------
Offset: Instruction:
--------------------------------------------------------------------------------
 
 


Note: All of the steps explained above were done on linux with linux builds of the referenced tools, if that matters somehow.

Now I have several questions: Why is the IFR empty? Are there other options for vendors to implement their setup utility than to use IFR? Are there any other options to get EFI variable offsets? Did I extract the IFR from the wrong DXE driver?

Greetings

PS. I cannot post links, thus I will reference them with footnotes as plain-text. This is really stupid.

[0]: dl.dell.com/FOLDER01891535M/1/E4310A14.exe
[1]: forums.mydigitallife.net/threads/i-present-you-a-tool-to-decompress-dell-uefi-bios.44785/#post-750992
[2]: github.com/LongSoft/PFSExtractor
[3]: github.com/LongSoft/Universal-IFR-Extractor

@s3rb31 - Yes, I see same, with PE32 and the 97E409E6-4CC1-11D9-81F6-000000000000 (Sometimes you need to use this instead when present)
I also see same if I extract body of entire module as a whole too. I checked with both LS v0.3.6 and Donovann6000’s 0.7 IFR tools, all same

In such cases, this tool is the only way I know to get variables needed for stuff, but it will take you some getting used to and learning how to find what you need
http://iorlvskyo.blogspot.com/

You need to do >> Tool >> EFI From Binary >> Then on left side, click through each one and in middle you will find what you need via expandable menu sections

Never mind, this also does not work on this BIOS I will leave there, because it’s a useful tool in such situations, usually.

What do you need to do here? BIOS can be edited with AMIBCP 4.55 if you need to change something.

Sorry for the late reply and thanks for your answer!



I was just curios to maybe see hidden options that my BIOS provides or if I even could enable Intel DCI on this machine since I never updated the UEFI firmware since I got it. Nothing specfic I need to do, just learning about the whole BIOS/UEFI modding thing which is pretty new to me.



Sadly I don’t have access to a Windows machine currently and for the next couple of days until I get home. But thanks for the hint I will have a look at the mentioned software.

Generally I am interested on how to reverse engine UEFI variable offsets so I can set them with modded GRUB setup_var function. Are there any methods besides extracting the IFR? Can AMIBCP show me the offsets to the variables?

Also I’d like to know why some BIOSes don’t have IFRs integrated. How are they implementing the UI?

Greetings

You’re welcome, and no worries, I am always late and behind too (welcome to my club! )
Well, this is not the BIOS to mess with or learn anything about modding (nor is any Dell really). I’d go ahead and update to latest BIOS if I was you, make sure you read info on BIOS between current and latest, in case you need to make any flashes in the middle first.

Due to what we’ve both found here, grub/setup_var or RU methods, cannot easily be used here, due to not being able to generate IFR in any way.
AMIBCP only shows “Handle” in GUI/settings area, or if dumping out the strings, this value is not useful for anything we’re discussing here.

Not being able to generate IFR is very rare, I only see in rare cases, maybe 2-3 out of 100 BIOS I look at, and almost always in those cases I can use the above mentioned tool to get variables instead.
This is the first and ONLY BIOS I’ve ever seen where I could not get at the variables one way or another. IFR is made by a tool, it’s not something actually included as part of the BIOS, the tool just takes the code/data and creates IFR in format laid out by the tool creator.

Summary - This is not the BIOS to learn anything on! If you want to learn BIOS stuff, work on some other BIOS, mainstream brands like Asus, Asrock, MSI, Gigabyte etc / non-OEM BIOS would be best to learn with (non-Dell/HP/Lenovo etc)
For this BIOS, if you want to make changes, AND have flash programmer to recover in case of brick, you can try edit with AMIBCP, or I can make changes for you manually so AMIBCP is not used
But you will have to figure out how to flash mod BIOS first, stock method will not work usually.