一个简单的 x86 裸机工具,设计用于从磁盘/USB 启动,并直接将系统内存转储到启动介质。它依赖于 BIOS 中断进行启动和磁盘操作,并进入非实模式以访问 1MB 屏障以上的内存。
本工具最初是为实验冷启动攻击而开发并成功测试的。通过冻结笔记本电脑的 RAM(低至 -60°C),然后快速从包含此工具的 USB 驱动器重新启动,可以在数据衰减之前将冻结的内存内容转储到磁盘,从而可以提取加密密钥等敏感信息。
INT 0x15 E820 检测有效的 RAM 区域,避免转储保留内存或内存映射 I/O。INT 0x13 AH=0x43(扩展写入)将内存内容直接写回到从 LBA 64 开始的启动驱动器。stage1.asm 是一个 512 字节的引导扇区。它初始化段寄存器,设置堆栈,并使用扩展读取(INT 0x13 AH=0x42)将 stage2 从 LBA 1 加载到内存中的 0x8000 处。然后跳转到 stage2。stage2.asm 执行主要逻辑:
INT 0x15 E820 获取内存映射。0x90000)。此工具将原始数据直接写入从扇区 64 开始的启动驱动器! 如果您将其写入包含重要数据的 USB 驱动器,内存转储将覆盖 LBA 64 及之后的所有内容。请为此使用专用、空白的 USB 闪存驱动器。
您需要安装 NASM 来编译此项目。
在 Windows 上,运行提供的构建脚本:
build.bat
在 Linux 上,您可以运行:
nasm -f bin stage1.asm -o stage1.bin
nasm -f bin stage2.asm -o stage2.bin
cat stage1.bin stage2.bin > boot.bin
boot.bin。boot.bin 写入 USB 驱动器(例如,在 Linux/macOS 上使用 dd,在 Windows 上使用 Rufus / Win32DiskImager)。
sudo dd if=boot.bin of=/dev/sdX bs=512