.dmp文件及Dump Flie,是一种内存快照文件
说到内存快照就不得不提一下
文件类型 | 说明 | 常见用途 |
---|---|---|
.raw | 原始磁盘映像文件(Raw Image),完整保存磁盘或内存的原始二进制数据。 | 虚拟机快照、数字取证、系统备份。 |
.dmp | 内存转储文件,记录系统或程序崩溃时的内存状态。 | 系统调试、崩溃分析。 |
.vmdk | VMware 虚拟磁盘文件,可包含虚拟机快照。 | VMware 虚拟机存储。 |
.vhd / .vhdx | Microsoft 虚拟磁盘格式,支持快照功能。 | Hyper-V 虚拟化平台。 |
.qcow / .qcow2 | QEMU/KVM 虚拟机的磁盘镜像格式,支持写时复制(Copy-on-Write)快照。 | Linux 虚拟化环境。 |
.bin | 通用二进制文件,可能是内存、固件或设备快照。 | 固件备份、取证分析。 |
.sav | 一些模拟器或游戏保存的状态文件。 | 模拟器(如PS、NES)中保存进度。 |
.snapshot / .snap | 特定系统生成的快照文件。 | 文件系统快照、数据库备份(如 ZFS、Btrfs)。 |
这些是取证中的一些文件的区分 | ||
然后来了解一个工具windbg,主要是处理dmp文件,在进行!analyze -v,等分析之后得到具体数据再来决定如何取证,一般windbg可以检测出程序崩溃原因. | ||
下面是关于CTF中windbg的一些应用场景 | ||
1.PE 原生可执行(.exe / .dll / .sys) | ||
题目给出的是裸 PE、没有源码、用 VS/Clang 编译,带少量反调试或壳。 | ||
典型题型: | ||
Windows Reverse(Medium-Hard) | ||
CrackMe/KeyGen(带注册码校验) | ||
算法混淆(花指令、自解密、VMProtect轻度壳) | ||
做法:.symfix 直接加载微软符号 → uf 看 WinMain → bp 下在 GetDlgItemTextA、memcmp、strcmp 等检查点 → r 看寄存器拿 flag。 | ||
2.内核驱动(.sys) | ||
题目给的是一个驱动文件,要求读/写某段内核内存或利用漏洞提权。 | ||
典型题型: | ||
Kernel-Pwn(HCTF、0CTF、QWB 常出) | ||
驱动 CrackMe(逆向 IOCTL 处理函数找校验) | ||
做法: | ||
本地用 VMware+WinDbg 双机调试,.reload /f 加载驱动符号; | ||
bp DriverEntry 或 bp ioctl dispatch 看输入输出缓冲区; | ||
对栈溢出,用 !analyze -v 看 BugCheck 码,再用 kv 定位 ROP/提权路径。 | ||
3.崩溃转储(.dmp) | ||
题目只给一个蓝屏/异常 dump,要你还原 flag 或利用路径。 | ||
典型题型: | ||
BlueScreen-Analysis(DEFCON CTF Quals、TCTF) | ||
“Find the flag in the memory dump” | ||
做法: | ||
.opendump xxx.dmp → !analyze -v 看崩溃原因; | ||
dps ESP 或 dps @rdx 搜字符串,常直接看到 flag 明文; | ||
若被池喷射,用 !poolused / !heap -a 找可疑内存块。 | ||
脚本+动态库混合(.NET Assembly / Python C-Extension) | ||
4.虽然 WinDbg 对托管堆不友好,但题目若用 C++/CLI 或 Cython 把关键算法封进 DLL,仍可用 WinDbg 调试原生部分。 | ||
典型题型: | ||
Python-Reverse(关键逻辑在 pyd 文件) | ||
PowerShell 加载的反射 DLL | ||
做法: | ||
sxe ld:python39.dll 等脚本引擎加载瞬间断下; | ||
uf 看导出函数,定位到原生校验; | ||
用 !dumpobj(SOS)或干脆 u 反汇编混合代码。 |