现代主板图形化 UEFI 交互界面大致由 StringsFormsFontsImages 组成,其中 FormsVFR 文本文件提供,其以二进制形式提供,这种二进制在 EDK 框架中称为 IFR(Internal Forms Representation)由 VFR 编译而来,类似 HTML结构。本文讲分享如何从 BIOS 中提取 IFR 并转换为为可阅读的文本文件,这将有助于我们修改隐藏的 UEFI 选项,修改 BIOS 偏移量可参考 这里

注意:本教程只适用于 AMI BIOS

演示环境

  • 机器型号 Dell XPS 15 9570
  • BIOS 版本 1.16.2
  • 操作环境 macOS Mojave 10.14.6

所需工具

获取 BIOS

关于 BIOS 的获取问题,我们可以使用 Universal BIOS Backup ToolKit,AMI Flasher utility-AFUWIN 等工具提取。这里我采用从 Dell 官网下载 XPS_9570_1.16.2.exe 并使用 Dell PFS BIOS Extractor 进行提取

使用 PyInstaller 编译 Dell PFS BIOS Extractor

确保 Python 版本在 3.7.0 及以上

epmandeMacBook-Pro:~ epman$ python -V
Python 3.7.7
epmandeMacBook-Pro:~ epman$ pip3 install pyinstaller
epmandeMacBook-Pro:~ epman$ git clone https://github.com/platomav/BIOSUtilities.git
epmandeMacBook-Pro:~ epman$ cd BIOSUtilities/Dell\ PFS\ BIOS\ Extractor/
epmandeMacBook-Pro:Dell PFS BIOS Extractor epman$ pyinstaller --noupx --onefile Dell_PFS_Extract.py

编译成功后可在 dist 文件夹中找到生成的可执行文件

解压 BIOS

用法:

usage:Dell_PFS_Extract [-h] [-a] [images [images ...]]
optional arguments:
    -h, --help   show this help message and exit
    -a, --advanced extract in advanced user mode

dist 目录中执行命令

epmandeMacBook-Pro:dist epman$ ./Dell_PFS_Extract ~/Downloads/XPS_9570_1.16.2.exe 

Dell PFS BIOS Extractor v4.5

File: XPS_9570_1.16.2.exe

    Extracted Dell PFS BIOS image!

Done!

Windows 环境下

于 Windows 环境下可前往项目 Releases 页面下载已编译完成的可执行文件,并于 CMD 中执行如下命令

C:\Users\Ep_Man\Desktop\Dell_PFS_Extract_v4.5>Dell_PFS_Extract.exe XPS_9570_1.16.2.exe

Dell PFS BIOS Extractor v4.5

File: XPS_9570_1.16.2.exe

    Extracted Dell PFS BIOS image!

Done!

提取模块

进入 UEFITool 使用快捷键 Command + O或在菜单栏选择 File>Open image file… 打开提取的 bin 文件

接着使用 Command + F或在菜单栏选择 File>Search… 查找 cfg lock 字样

双击返回的 Unicode text "cfg lock" found in PE32 image section at offset 7D344h 即可定位到该模块,最后右键该模块选择 Extract body… 完成提取

保存 IFR 为文本

在 macOS 下打开 Terminal 使用 ifrextract 工具来保存为 txt 文本文件(Usage: ifrextract input_file output_file)

epmandeMacBook-Pro:~ epman$ cd XPS_9570_1.16.2.exe_extracted/
epmandeMacBook-Pro:XPS_9570_1.16.2.exe_extracted epman$ ./ifrextract pe32.efi 9570_1.16.2_IFR.txt
Input: pe32.efi
Output: 9570_1.16.2_IFR.txt
Protocol: UEFI
epmandeMacBook-Pro:XPS_9570_1.16.2.exe_extracted epman$ 

在 Windows 下打开 IRFExtractor.exe 选择刚刚提取的 pe32.efi 并点击 Extract 保存为 txt 文本文件

若提取错误 Protool 则会显示红色字样 Unkown ,正常应为绿色字样 UEFI


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

防火墙技术学习笔记 上一篇
Dell XPS 15 9570 处理器降压 下一篇