Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ida-efiutils — 一些用于 IDA Pro 的脚本,以辅助对 EFI 二进制文件进行逆向工程 | Kitploit
工具/GitHubGitHub/snare/ida-efiutils
嵌入式系统安全逆向工程硬件与物联网安全二进制分析固件分析
GitHubsnare/ida-efiutils

ida-efiutils

一些用于 IDA Pro 的脚本,以辅助对 EFI 二进制文件进行逆向工程

查看仓库
309667年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

用于 IDA Pro 的 EFI 脚本

一些用于辅助逆向工程 EFI 可执行文件的 IDA 脚本。

该包包含以下文件:

  1. efiutils.py - 包含一些辅助函数的 IDAPython 模块

  2. efiguids.py - 用于 EFI 协议的已知 GUID 集合

  3. efiguids_ami.py - 用于 AMI BIOS 中使用的协议的已知 GUID 集合

  4. behemoth.h - 一个巨大的头文件,包含 EFI 的类型和结构定义集合

  5. structs.idc - 包含一些结构定义的 IDC 脚本(已被 behemoth.h 取代)

  6. te_image.bt - 用于 TE 二进制映像的 010 Editor 模板

  7. te_loader.py - 用于 TE 二进制映像的 IDA Pro 加载器脚本

这是我第一次尝试编写 IDA 脚本,如果我重复造了轮子或做了任何愚蠢的事情,请原谅我并告诉我。

函数

下面描述了主要的有用函数。有关其他函数的更多信息,请参阅代码和文档字符串。

rename_tables()

查找二进制文件的第一个入口点,尝试跟踪传递给入口点函数的参数,并重命名存储关键 EFI 表的全局变量。执行以下重命名操作:

  1. ImageHandle 最终所在的全局变量被重命名为 gImageHandle。

  2. SystemTable 最终所在的全局变量被重命名为 gSystemTable。

  3. SystemTable->BootServices 最终所在的全局变量被重命名为 gBootServices。

  4. SystemTable->RuntimeServices 最终所在的全局变量被重命名为 gRuntimeServices。

调用指令只会被跟踪一层深度,因为大多数可执行文件会在入口点或从入口点调用的函数中复制表引用。如有必要,请更改 MAX_STACK_DEPTH。

update_structs()

查找对上述重命名表的交叉引用,并将其名称更新为相应结构中的结构偏移量。如果 rename_tables() 失败,您需要像上面那样手动重命名,此功能才能正常工作。

例如:

root@kitploit:~
    mov     rax, cs:qword_whatever
    call    qword ptr [rax+150h]

变为:

root@kitploit:~
    mov     rax, cs:gBootServices
    call    [rax+EFI_BOOT_SERVICES.UninstallMultipleProtocolInterfaces]

rename_guids()

在数据段中查找 GUID 并重命名它们。从 TianoCore 源码中提取了 470 个协议 GUID,专有的 Apple(及其他厂商)GUID 将在遇到时添加。

go()

执行上述所有操作的便捷方法。

用法

  1. 在 IDA Pro 中加载您的 EFI 二进制文件

  2. 导入 behemoth.h 以定义必要的数据结构

  3. 将本地类型中的结构添加到您的 IDB 中

  4. 运行 efiutils.py 将其添加到 python 的路径中(或通过其他方法执行此操作)

  5. 查看代码/文档字符串,但可能只需:

    root@kitploit:~
     import efiutils; efiutils.go()
    

要使用 te_loader.py TE 映像加载器,请像安装任何其他加载器一样安装它。在 OS X 上,可以通过将其复制或符号链接到 idaq.app/Contents/MacOS/loaders/ 下的 loaders 文件夹中来完成。

下载工具