简介:icedump 6.026 与 nticedump 1.14 是一套面向 Windows 开发者与系统管理员的内存转储和内核调试工具,分别用于用户态进程内存分析与 NT 内核级转储,适合排查复杂崩溃、分析内存结构的中高级技术人员。压缩包共 410 个文件,约 2.62MB,包含大量汇编源码、包含文件、C++ 源码与头文件,以及可执行程序、动态链接库、导入库和构建脚本、批处理、说明文档,便于按源码、产物和文档分层研读。包内区分 Windows NT 与 Windows 9x 平台配置,附带作者更新记录和文件说明,历史版本改动一目了然。目前已有 164 人学习浏览。通过研读命令跟踪、命令保护、单步调试、内核转储等汇编模块,可理解内存保护、调试流程与转储生成的实现思路,利于深入掌握 Windows 调试机制与内核分析,对底层调试实践有直接参考价值。
1. 这个工具包到底解决什么问题
1.1 从“运行中的系统”拿证据的难处
先把这个工具包的用途说明白:icedump 是一套老牌的 DOS 环境磁盘镜像工具,nticedump 是它的 NTFS 增强版本。两者到今天仍然被用在数字取证、数据恢复、企业合规审计这类场景里,核心任务只有一个——在不对原始磁盘造成任何写入的前提下,把整块硬盘的比特级镜像完整拿下来。
很多人不理解,为什么 Windows 系统明明跑得好好的,非要用 DOS 环境去做镜像。原因其实很直接:操作系统只要在运行,后台就会持续产生页面文件写入、日志更新、时间戳刷新这一类的磁盘活动。哪怕我老老实实地用资源管理器去复制文件,文件的最后访问时间也会被改动,这对普通场景无所谓,但在取证场景是致命的,因为证据的“原始性”一旦被破坏,后续呈堂也好、内部审计也好,都经不起推敲。
所以取证领域早就形成一个共识:对原始介质,必须用不含操作系统功能的环境去访问,或者尽量让介质处于只读状态。icedump 就是基于这个思路设计的工具,它本身很小,运行在 DOS 环境下,直接对磁盘控制器发指令,绕开文件系统的缓存机制。你看到的参数、命令,本质上都是在跟底层硬件打交道,而不是在一个高层的文件管理器里点来点去。
1.2 icedump 和 nticedump 的分工
这两个工具的关系经常有人搞混。简单说,icedump 是一个基础版本,它通过 IDE 控制器去读取磁盘,支持传统的 CHS 寻址方式,也能处理一部分 LBA 模式。nticedump 则是专门针对 NTFS 文件系统的场景做了加强,名字里的“NT”也是从 Windows NT 继承下来的概念。
为什么要单独搞一个 NT 增强版?因为 NTFS 的体积通常很大,而且分区结构里存在 MFT(主文件表)这类特殊区域。用基础版来做镜像,虽然也能逐扇区读取,但遇到大的 NTFS 分区时效率明显不够,而且在显示分区信息、处理长文件名这类细节上容易出问题。nticedump 在读取策略上做了调整,对 NTFS 分区的识别更准确,遇到 bad sector 时的处理也更稳定。
实际使用中,我通常的做法是:不管目标盘是什么文件系统,都优先用 nticedump 去尝试读取,因为它的兼容面更宽。如果目标是很老的 FAT16 分区,再退回基础版 icedump 也来得及。这套工具包之所以直到现在还有人用,正是因为它在“证据固定”这个环节上有不可替代的价值,稳定、可靠、没有任何多余的功能干扰。
2. 核心原理与关键设计
2.1 为什么能绕过系统的文件锁
先从一个最常见的疑问说起:为什么直接在 Windows 里用 Ghost 之类的工具不行?答案在于文件锁。Windows 系统出于自身保护机制,会锁定正在使用的系统文件、页面文件、注册表配置单元,第三方工具在系统内运行,很难完整读取这些被锁定的区域。即使操作者以管理员身份运行,也往往会遇到“文件被占用”的报错,或者镜像结果里出现空洞。
icedump 的思路完全不同。它通过引导进入 DOS 环境,在操作系统加载之前就去访问磁盘。DOS 环境下没有文件锁的概念,IDE 控制器处于最基础的工作状态,工具直接用端口 I/O 的方式跟控制寄存器、数据寄存器对话,逐扇区地读取数据。这种访问方式相当于在文件系统下面再往下一层,文件系统本身是什么格式都无所谓,它读到的只是最原始的扇区序列。
用生活里的事情来类比,Windows 里的文件操作相当于在图书馆前台借书,管理员会告诉你哪些书在修复、不能外借;而 icedump 的做法是直接走进书库,把书架上的每一本书都按原始顺序逐本拍下来,管理员根本来不及干预。你说这种方式“粗暴”也行,但在保证数据完整性这件事上,粗暴恰恰是最可靠的。
2.2 NTFS 支持给取证带来了什么
需要明确的是,取证工具的目标永远是“扇区级别的完整副本”,而不只是“把文件复制出来”。不过,理解文件系统结构仍然很重要,因为这决定了工具能不能高效地校验结果、能不能在镜像过程中发现问题。
NTFS 跟 FAT 的差别很大。FAT 用文件分配表记录数据块的位置,结构简单、线性、好处理;NTFS 则把所有信息都集中在一个叫 MFT 的数据库里,每个文件对应一条 MFT 记录,记录里包含属性列表、数据区位置、时间戳等多种元数据。MFT 本身也可能碎片化,所以读取时不能简单按顺序走,必须解析 MFT 的位图信息才能知道整个分区的分配情况。
nticedump 做的事情,就是在读取扇区的同时,对 NTFS 的关键区域做标注和校验。它不会因为你指定“整个磁盘镜像”就盲目地从头跑到尾,而是会在内部识别分区边界,对 MFT 区域做重点读取确认。这样一来,当你在最后比对镜像哈希值时,发现不一致的概率明显降低。对于那些需要反复多次采集、比对的案件,这个稳定性非常关键。
3. 实操指南:从准备到产出镜像
3.1 准备启动环境和工具包
动手之前先把环境想清楚。最常见的部署方式是做一个 DOS 启动 U 盘,把 icedump 和 nticedump 的主程序、配套的帮助文件一起放进去。具体怎么做,我分享一下我自己的流程。
首先要准备一台可以设置 BIOS 为传统启动模式的电脑。现在很多新机器默认开了安全启动和 UEFI,这会让老工具无法运行。在我的经验里,一台五六年前的商用机反而是最合适的,它的 BIOS 设置简单,IDE 兼容模式也保留得比较完整。
然后准备 U 盘。容量不需要大,1GB 到 4GB 就足够。用 Rufus 或者 HP USB Disk Storage Format Tool 把 U 盘做成 FreeDOS 启动盘。需要注意,U 盘的文件系统格式建议用 FAT16 或 FAT32 的其中一种,保证 DOS 能正确识别。做完之后,把 icedump.exe、nticedump.exe 还有 Dump 相关的辅助文件直接复制到 U 盘根目录,不用装什么驱动。
最后,也是最重要的一步:把目标盘和当前机器隔离。取证程序要求原始盘必须经过写保护,不过 IDE 和 SATA 时代没有物理写保护开关,所以我们用软件方式来保证——不挂载任何写操作,全程只读。工具本身不会主动写盘,但是你要确保操作系统不会自动挂载。这也是为什么强制用 DOS 环境的原因之一。
3.2 基本命令与参数说明
工具启动之后,界面非常简单,没有图形化的按钮,一切靠命令行参数。我整理了一份常用参数对照表,基本覆盖了日常取证的需求。
| 参数 | 功能 | 说明 |
|---|---|---|
| /L | 列出当前识别的所有磁盘 | 建议第一次先执行,确认盘符和容量 |
| /S | 复制指定扇区范围 | 参数格式为 /S=起始扇区-结束扇区 |
| /F | 指定输出文件名 | 比如 /F=evidence.img |
| /C | 设置要复制的柱面数 | 老式磁盘按柱面操作时有用 |
| /H | 镜像时跳过坏扇区 | 遇到坏道时继续而不是中断 |
| /V | 校验模式 | 对镜像结果进行读取校验 |
举个例子,如果目标盘的起始位置是第一个物理磁盘,想完整镜像到 U 盘中的镜像文件,我会这样操作:
nticedump.exe /L先看清楚磁盘编号,然后执行:
nticedump.exe /S=0-10240000 /F=evidence.img /V这里的 /S 指定了扇区范围,0 到 10240000 是估算值,实际操作时需要根据第一步 /L 显示的容量来换算。换算公式很简单:总扇区数 = 磁盘总字节数 ÷ 512。比如一块 80GB 的硬盘,总扇区数大约是一亿五千六百多万,写成参数就是 /S=0-156300000。
我看到很多新手在这里犯错,把 /S 的数值当成 MB 或者 GB 来填。其实工具只认扇区号,不认容量单位。稳妥的做法是:先用 /L 看清楚磁盘的 CHS 值,再用工具默认的全盘复制模式,不要手动指定扇区范围。只有当你想精准提取某个特定区域时,才需要手算。
3.3 现场操作的几个关键细节
实际操作的时候,有几个细节非常影响成功率,这里一个个说。
第一个是电源问题。古老的 IDE 硬盘需要 +12V 和 +5V 供电,而现在的台式机电源可能已经不再提供 IDE 供电口。你需要准备一根大 4Pin 转 SATA 的电源线,或者直接用外置硬盘座。但外置硬盘座有一个风险:部分型号会主动向硬盘发送休眠命令,这在长时间镜像过程中可能导致工具卡死。我个人的经验是,能不依赖外置座就不要依赖,尽量用机箱内部的电源线和数据线。
第二个是目标盘容量和输出文件系统的关系。DOS 环境访问 U 盘时,FAT16 单个文件上限是 2GB,FAT32 单个文件上限是 4GB。也就是说,如果你的证据盘是 80GB,你不可能直接把镜像文件保存在 FAT32 的 U 盘上,因为单文件超过 4GB 就会被截断。解决办法有两个:一个是把镜像文件配置成按卷拆分,每次写到一定大小自动新建下一个文件;另一个是把镜像直接输出到另一个容量更大的磁盘——比如目标盘是 SATA 硬盘,输出盘就接一块容量更大的 IDE 硬盘。
第三个是时间问题。全盘逐扇区读取的速度其实并不快,特别是老硬盘的持续传输速度只有 30 到 60MB/s,一块 80GB 的盘跑完全程可能需要四十分钟到一个小时。中间如果断电或死机,前面的进度就全部浪费了。所以我有两个习惯:一是确保机器接在稳定电源上,有条件的加个UPS;二是镜像过程中定时停下来检查一次输出文件的增长情况,确认没有异常就继续跑。
4. 常见问题与排查技巧实录
4.1 镜像校验不一致
这是我遇到最多的一个问题,通常发生在镜像完成后做哈希对比的环节。现象是源盘和镜像文件算出来的 MD5 或者 SHA1 不一致,而不是完全对不上,只是有一小段数据有差异。
第一个排查方向是源盘本身存在坏扇区。如果源盘某几个扇区已经物理老化,工具第一次读取时得到的数据和第二次读取时可能不同,导致校验失败。这种时候可以尝试用 /H 参数跳过坏扇区并在日志里记录位置,然后重新做一次镜像;但要注意,跳过的位置在最终证据里是空缺的,这一点必须在记录里明确说明。
第二个方向是源盘存在缓存未刷新的情况。如果是通过外置硬盘座连接的硬盘,某些桥接芯片会在读取时做缓存,导致返回的数据流不稳定。把硬盘直接接在主板的 SATA 或 IDE 接口上,通常能避免这个问题。
第三个方向有点隐蔽,但实际遇到过:输出介质自身不稳定。如果 U 盘质量差或者读写寿命将尽,写入时会出现静默错误,数据看起来写进去了,实际内容已经不对。解决方法是换一块可靠的新U盘,或者在镜像完成后立即把输出盘重新挂载,对镜像文件做一次读取测试。
4.2 界面卡住或长时间无响应
有时候工具运行到一半,进度条迟迟不动,这不一定就是死机。先区分一下情况:如果光标还在闪烁,说明内核可能还在等待硬盘响应;如果整个屏幕完全冻结,键盘输入没有反应,那大概率是遇到了硬件层面的死锁。
在 IDE 时代,这种死锁很常见,原因通常是硬盘出现了无法恢复的坏扇区,导致控制器长时间没有返回。遇到这种情况,我建议不要立刻断电,先给工具三十秒到一分钟的时间;如果不行,再关机重启,用 /H 参数跳过故障区域重试。
另外,很多老牌工具在 DOS 下对 USB 键盘的支持并不好。如果你发现方向键没反应,试着换成 PS/2 接口的键盘。这听起来像是古董操作,但在这种场景下就是最有效的。
4.3 与另一个工具配合时要注意些什么
取证工作里,很少只用单一工具就得出最终结论,通常会用多个工具互相验证。我常用 FTK Imager 把 icedump 做出来的镜像文件挂载成只读虚拟磁盘,然后用取证软件去解析 NTFS 分区结构、提取文件、生成报告。
需要注意的是,不同工具对镜像文件头的解析方式有差异。icedump 输出的镜像文件是纯裸扇区数据,还是带了一些头信息?这会影响后续工具的判断。我习惯的做法是:先用十六进制编辑器打开镜像文件的前几十个字节,确认没有多余的文件头,再拿去给 FTK 或者 Autopsy 加载。如果发现带上了自定义头部信息,可以用工具转成 E01 或 RAW 格式后再进行分析。
还有一个小技巧,镜像文件的命名不要带空格和特殊符号,DOS 时代养成的习惯现在依然适用,因为很多解析工具对路径中的特殊字符处理不够严谨,容易报错。用 case_2025_evidence.img 这类简洁命名,能省去不少麻烦。
5. 最后的几点实操体会
用这套工具做取证,我一直把它当作最后一道保险。每当遇到疑难案件或者源盘状况不佳的情况,我都会先把系统引导进 DOS 环境,用 nticedump 把整块盘完整拉下来,然后才敢碰原始盘做进一步分析。它虽然没有现代工具那种花哨的图形界面,但稳定性和结果的可信度反而是最高的。
另外补充一点:这套老工具对硬件的依赖很强,最好准备一两台旧机器专门用来跑取证。新机器虽然也能跑,但遇到磁盘控制器兼容性问题时,排查起来非常头疼。如果你手头没有合适的旧机器,VMware 里虚拟一个 DOS 环境,再接上原始磁盘的直通设备,也是可行的替代方案,只是配置门槛会高一些。
我记得第一次用 nticedump 是在一个老案件里,当时那块硬盘已经出现明显异响,Windows 系统根本无法引导。我用启动 U 盘进入 DOS,发现工具能识别出磁盘编号,但读取到某个扇区时界面停住了。当时没有经验,傻等了几分钟没动静,只能断电重启。后来学聪明了,遇到这种情况就用 /H 参数跳过错区,先把完整的部分镜像出来。这个动作虽然简单,但对保存证据完整性来说,价值非常大。
如果你手头也有一批老硬盘需要做归档镜像,或者正在学习数字取证的基础流程,完全可以拿这套工具练手。它逼着你去理解磁盘寻址、文件系统结构、分区边界这些底层概念,这些知识在任何现代取证工具里都不会过时。学会使用它,相当于把取证的基本功重新打磨了一遍。
本文还有配套的精品资源,点击获取