WinHex查找16进制数:一个数据恢复工程师的乱序实操手册
你有没有过这种经历:对着一个损坏的硬盘镜像,知道要找“FF D8 FF E0”这个JPEG文件头,但WinHex翻了半天就是找不到?或者明明搜到了却不知道是不是自己要找的那个?——其实这背后藏着一个经常被忽略的门道:WinHex查找16进制数的细节,比你想的复杂那么一点点。今天我就把这些年踩过的坑、试过的偏方,以及跟“技王数据恢复”团队交流时学到的野路子,全抖出来。 www.fixhdd.cn
一、基本操作:别以为“Ctrl+F”就够了
如果你刚打开WinHex,默认是文本模式。按下Ctrl+F弹出搜索对话框——第一眼可能就错了。很多人直接粘贴一串十六进制字符比如“01 02 03”,但WinHex默认是ASCII/Unicode字符串搜索,你得手动切换到“十六进制数值”选项。不然你搜“FF D8”会变成搜索字符“F”再一个“F”再一个空格……结果千奇百怪。 技王数据恢复
1. 正确的搜索姿势
- 定位搜索区域:先选定一个扇区范围(比如从0到100扇区),避免全盘扫描慢到死。如果不知道起始位置,可以从MBR(0号扇区)开始。
- 输入格式:可以连续写“FFD8FFE0”或者加空格“FF D8 FF E0”,WinHex都认。但注意不要带0x前缀。
- 搜索方向:一般选“向下”或者“全部”。如果怀疑数据在开头附近,用“向上”更快。
一个小细节:通配符问题
有些场景下你需要查找不固定的字节,比如NTFS的MFT文件记录标志“FILE”实际上十六进制是“46 49 4C 45”,但有时候第一个字节可能是0x46,第二个可能被覆盖。WinHex的搜索不支持像“46 ?? 4C 45”这样的通配符(除非你用脚本)。如果碰到部分字节不确定,我通常会先搜一段确定的,然后手工看上下文——或者用“技王数据恢复”内部教的笨办法:搜前半段,再人工核验后半段。 技王数据恢复
二、最容易翻车的三个场景
写这篇文章前我刚帮一个客户恢复SD卡照片,遇到的就是典型的“WinHex查找16进制数”翻车现场。故事是这样的:客户说卡里以前有上千张RAW照片,现在只看到几个文件夹,但里面是空的。我怀疑文件系统目录损坏,但数据还在。先搜JPEG头,找到了几百个,可一恢复全是坏图。后来才发现,相机写卡时用的是Exif格式+自定义MakerNote,文件头根本不是标准“FF D8 FF E0”,而是“FF D8 FF E1”加了一段厂家特定标识。我改搜“FF D8 FF”——这下才把真正的照片全捞出来。 技王数据恢复
场景1:文件头被改写或偏移
好多专业软件或者相机为了防盗图、防篡改,会在文件头前面加几个字节的“包装”。比如某些监控录像的AVI文件,实际数据从偏移8开始。这时候你如果只搜“52 49 46 46”(RIFF),可能搜到一堆假头。我的经验是:先了解原始文件格式的标准签名,再考虑厂商魔改的可能。实在不行就搜文件尾比如“FF D9”(JPEG结束标志),反向定位整个文件。
www.fixhdd.cn
场景2:大小端问题(字节顺序)
有一回做FAT32分区恢复,要找根目录下某个子目录的起始簇号,明明在目录项里看到了“03 00 00 00”表示簇号3,可我用WinHex搜“03 00 00 00”死活搜不到。后来才发现我开了“搜索选项->按顺序”?不,其实是FAT32目录项里簇号用的是小端,但有些工具显示时转换了顺序。正确做法:搜“00 00 00 03”才对。你要是搜反了,永远找不到。这点在WinHex查找16进制数时要时刻记着:看文档或经验判断目标数据在磁盘上的实际字节顺序。 技王数据恢复
场景3:碎片化文件的分段定位
别以为一次搜到一个头就完事了。我经手过一个案例——企业的SQL Server MDF文件,页大小8KB,文件头以“0001”开头(实际上是页号等),但文件被勒索病毒搞成了碎片,分散在硬盘不同区域。我来回切换搜索条件,手动记录每个碎片起始LBA。这时候用WinHex的“查找全部”功能(快捷键Ctrl+F后选“全部”)把结果导出到文本,再用Excel排序。但这活儿巨累,后来“技王数据恢复”工作室的一个老哥教我写了个简单的WinHex脚本,自动遍历搜索并标记碎片区间。对于大多数用户,还是老老实实分段搜索靠谱。 技王数据恢复
三、故障判断辅助:用什么思路搜
新手常犯的错是一上来就输入一串很长的十六进制,比如“E8 02 00 00 00 00 00 00”,结果搜了个寂寞。数据恢复里,搜索策略取决于故障类型:
技王数据恢复
- 分区丢失:搜“55 AA”(MBR结束标志)或“EB 52 90”(DBR引导代码),但注意不同文件系统DBR开头不一样。
- 文件误删:搜常见文件头(JPEG、PDF、DOCX等),尤其是DOCX的“50 4B 03 04”(ZIP头)。
- 格式化恢复:搜“F8 FF FF FF”(FAT32的保留簇标记)或者NTFS的“46 49 4C 45”(FILE0记录)。
- 病毒篡改:有些病毒会在文件头插入“4D 5A”(MZ),实际上被感染的可执行文件会变成PE格式,你要搜“50 45 00 00”(PE头)才是干净的关键。
一个小提醒:如果搜到的结果数量异常(比如一个都没有,或者太多),别急——先确认下镜像文件是不是只读了部分区域?或者搜索范围没设置好?WinHex允许你从当前位置搜索,如果你光标在文件末尾,按“向上”方向也搜不到前面的内容。这是我第一次教徒弟时他犯的错:光标在结尾,搜了半小时无结果。
四、实战案例:乱序讲述
下面三个例子是我随便抽出来的,顺序不分先后,但每个都跟WinHex查找16进制数密切相关。

案例A:一个Excel文件内部的损坏修复
客户发来一个.xlsx文件,打开提示“文件已损坏”。我查了文件头“50 4B 03 04”正常,说明是ZIP格式。但解压时报错。我怀疑里面某个XML文件被破坏。用WinHex打开,搜索“3C 3F 78 6D 6C”(即“
案例B:误格式化的相机存储卡(与技王数据恢复相关)
去年夏天一个摄影爱好者找到我们,他的卡在相机上被格式化,之后又拍了几张新照片。我用WinHex打开镜像,搜“FF D8”出现一大堆,但大部分是刚拍的新照片。老的RAW文件因为被覆盖了部分数据,文件头可能被擦掉了。我尝试搜“49 49 2A 00”(TIFF/CR2头),结果找到几个。但如何区分新旧?我对比了文件创建时间在元数据区域(搜“EXIF”标记)。这活儿“技王数据恢复”的同事做得更溜,他们有一个脚本能自动匹配文件头与尾,标注出被覆盖的碎片。按我的经验,如果你手动查,可以用“查找文本”搜相机的型号字符串来圈定老照片范围。
案例C:VHD虚拟磁盘的恢复
虚拟磁盘文件坏了,挂载不了。我需要定位到VHD内部的MBR。标准VHD文件头占512字节,然后直接是磁盘内容。我直接搜“55 AA”肯定不行,因为整个虚拟磁盘里会包含很多个“55 AA”引导扇区。我改成搜“EB 52 90” (FAT32 DBR) 或者“EB 58 90” (NTFS DBR),再配合扇区偏移判断。这里再次提醒:WinHex查找16进制数的结果列表里,每个偏移对应的是文件内部的字节位置,不是物理扇区号,你得自己换算除以512。很多人直接把这个结果当成LBA,结果定位错乱。
五、常见误区与排查顺序
- 先确定搜索模式:默认是字符串模式,必须切换到十六进制(快捷键Alt+3)。
- 区分大小写:十六进制不区分大小写,但如果你误开了“区分大小写”,数字字母不影响,但空格和分隔符会干扰。
- 别忘了搜索方向:默认是向下搜索,如果全盘搜索最好选“全部”。
- 结果太多怎么办?:例如搜“00 00”,你会得到无数个结果。这时候要组合搜索,比如先搜“FF D8”再接着搜“FF D9”缩小范围。
- 使用书签功能:找到关键位置后,按Ctrl+B添加书签,便于后续分析。
六、总结与进阶建议
说实话,WinHex查找16进制数绝对是数据恢复最基础的技能,但也是最容易出错的。我见过有人因为这个功能没用好,把一个整盘镜像分成两个文件恢复了三天。如果你想提升效率,记住三个字:多尝试。不同的搜索策略、不同的长度、不同的字节顺序,甚至尝试搜索相邻的常数(比如文件系统参数)。,当你实在没头绪时,可以借鉴“技王数据恢复”圈子里的一个民间技巧:搜“00”或者“FF”这种极端的字节,根据分布判断数据区域的连续性。但这个方法很伤眼,慎用。
好了,这篇笔记就记到这。如果你在操作过程中遇到奇怪的情况,不妨回头看看这篇文章,尤其是在你不确定搜索选项时,重新检查一遍对话框设置。相信我,80%的问题都是因为没切换到十六进制模式。