Winhex4.1 Winhex简介
Winhex是X-Ways公司出品的一款十六进制编辑、磁盘编辑软件,其公司网站对其功能介绍如下:
* 可以对硬盘、软盘、CD-ROM、DVD、ZIP及各种存储卡进行编辑
* 支持FAT、NTFS、Ext2/3、ReiserFS、Reiser4、UFS、CDFS、UDF等文件系统
* 可支持重组RAID及动态磁盘
* 附带数据恢复功能
* 可以访问物理内存及虚拟内存
* 内置数据解释器,可以识别解释20种数据类型
* 可以用数据结构模板查看、编辑结构数据
* 可以分割与合并文件
* 可以对文件进行分析与对比
* 具有灵活的搜索和替换功能
* 可以对磁盘进行克隆
* 可对磁盘进行压缩镜像备份,支持对备份文件进行分卷处理
* 具有编程接口,支持脚本操作
* 支持256位加密、校验和、CRC32、hash(MD5,SHA-1)计算
* 支持对磁盘进行数据安全销毁
* 包含ANSI ASCII, IBM ASCII, EBCDIC, Unicode字符集
* 支持文件大小超过4GB
4.2 软件的获取与安装
读者可以在网络上搜索提供下载Winhex的网站,或直接到其公司网站www.winhex.com下载试用版或购买正版。
Winhex的安装与普通软件安装没有区别,以在Windows XP下为例,双击Setup.exe程序即可开始安装过程。如图4.1所示。
图4.1
程序默认的安装路径是C:\Program Files\WinHex,当然也可以自行选择安装到其他位置。
可以选择语言种类,不过用以选择中文的Chinese按钮处于灰色不可选状态,应该是尚不支持中文。用户可以选择其它语言,默认语言是英文。
确定安装位置无误后,点击OK按钮,程序会弹出一个询问框,询问是否确定将程序安装到所选位置。如图4.2所示。
图4.2
如果要对安装位置重新选择,可以按“否”按钮回到原界面进行设置。否则按“是”按钮继续安装。
程序随即会弹出询问框询问是否要建立快捷方式。如图4.3所示。点击按钮“是”,程序安装完毕后会在“开始”→“所有程序”中添加程序启动快捷方式。
图4.3
最后,程序提示安装完毕,询问是否运行程序。如图4.4所示。
图4.4
点击“是”按钮,程序即开始运行。如果不想立即运行程序,可以点击“否”按钮,在使用程序时从开始菜单中启动程序。
4.3软件使用
4.3.1 启动软件
以Winhex15.1为例,第一次运行程序,程序会给出一个设置窗(如图5所示),有两个可选项:
* Write protection by default:设置写保护,即只可以对打开的对象进行查看,不可以进行修改;
* Computer forensics interface:如果要使用取证界面,则应该勾选项。
我们是要使用底层分析及数据恢复功能,所以不需要在这个设置窗中进行任何设置,直接点击OK按钮即可,这样运行的程序默认允许对打开的对象进行读写操作。
图4.5
程序运行后的界面如图4.6所示。现在还只是一个空的程序主界面,可以在这个界面中选择所需的各种功能。
图4.6
4.3.2 打开对象
要对一个对象进行底层分析,首先要将其打开。下面我们以打开一个磁盘后的界面来介绍一下Winhex的十六进制编辑窗口。
在Winhex主界面中打开一个磁盘可以有三种方式:
1.点击工具栏中的 按钮。
2.按键盘上的F9键。
3.点击菜单Tools→Open Disk,如图4.7所示。
图4.7
无论使用哪用方法,都会弹出磁盘选择框,如图4.8所示。
图4.8
在磁盘选择框中,磁盘以两种形式分组,上面的一组是“逻辑磁盘”,下面的一组是“物理”磁盘。我们可以简单地理解“逻辑磁盘”就是我们在“我的电脑”界面中看到的一个个的分区,它们存在于物理磁盘中。
打开逻辑磁盘和打开物理磁盘的区别在于:
* 打开逻辑磁盘时Winhex使用该分区内的文件系统参数遍历整个分区,可以从文件系统层解释分区内的数据;
* 打开物理磁盘时,Winhex不以任何文件系统为基础,只是简单地将整个磁盘的内容以十六进制的形式展现在我们面前。
由于我们目前尚未接触到文件系统知识,所以在此我们不对此进行详细的介绍,在后面学习到文件系统的知识后自然会理解。图4.9可以帮助大家理解一下物理磁盘和逻辑磁盘的关系。
图4.9
4.3.4 界面布局
现在我们打开物理磁盘中的HD0,并以它为例对打开后的界面进行介绍。请看图4.10。
图4.10
1.菜单栏
菜单栏集合了程序提供的所有功能入口。
2.案件数据
主要用于取证,可以将一个磁盘装入到案件数据框中查看数据、进行取证记录等。这个功能在数据恢复中并不常用,可以通过勾选菜单栏中的View→Show→Case Data选项控制它的显示与否。如图4.11所示。
图4.11
3.目录浏览器
根据打开磁盘方式的不同,目录浏览器内显示的内容会有所不同:
* 打开物理磁盘时,如果有可识别的分区,目录浏览器中会显示各个分区的类型、大小及起始扇区等信息。
* 打开逻辑磁盘时,如果有可识别的文件系统,目录浏览器中会显示逻辑磁盘中的数据内容,显示效果与在“我的电脑”中打开一个分区后看到的内容相同。
是否显示目录浏览器可以通过View→Show→Directory Browser控制。
4.数据解释器
数据解释器是一个浮动窗口,可以在屏幕窗口中任意拖拽到任何位置。是否显示数据解释器由View→Show→Data Interpreter控制。
当鼠标指针位于十六进制区或文本字符区时,数据解释器可以很方便地将鼠标指针当前所处位置的字节(或字符区的字符在十六进制区的对应字节)及向后若干个字节的十六进制数解释成十进制数、八进制数或同步显示十六进制数。可以在数据解释器窗口中右击,在弹出的快捷菜单中进行相应的设置。快捷菜单如图4.12所示。
图4.12
(1) Options:点击该选项(或在数据解释器窗口左半部分双击)会弹出数据解释设置框(如图4.13所示),可以在设置框中通过多选形式设置要在数据解释器中显示的内容、性质及类型。默认情况下数据解释器将十六进制解释为十进制,如勾选“8bit,signed”会在数据解释器中显示指针所处位置的这一个字节的十进制值,“signed”表示有符号,即数值有正负之分。如果选择了“8bit,unsigned”,数据解释器会将指针当前所在位置的字节解释成无符号的数值,即只将其当做正数。
数据解释设置框中还可以设置数据解释的精度,设置解释成各种时间值,设置按Big-Endian顺序解释多字节数值(默认以Little-Endian解释多字节数值)等。
图4.13
(2) Big Endian:点击该选项会在其前面显示对勾,表示以Big Endian顺序解释多字节数值(同样的设置功能在数据解释设置框中也有,直接将其放入快捷菜单中是为了便于使用)。在选项被勾选的情况下再次点击它,就会重新回到Little Endian解释状态。
(3) Hexadecimal:点击该选项会在其前面显示对勾,表示将数值显示为十六进制(默认解释为十进制)。再次点击它,就会回到解释为十进制状态。
(4) Octal:解释为八进制,该选项的使用方法与前两个选项相同。
5.工具栏
工具栏集合了一些常用功能的快捷图标。是否显示工具栏可以通过View→Show→Toolbar控制。随后我们会对工具栏进行专门的详细介绍。
6.对象卡
对象卡用于标识当前打开的对象窗口。是否显示对象卡可以通过是否勾选View→Show→Tab Control控制。在对象卡上右击会弹出关闭窗口快捷菜单,可通过该菜单关闭当前选项卡标识的对象窗口。
7.详细面板
详细面板用以显示当前活动窗口对象的详细信息,是否显示详细面板可以通过是否勾选View→Show→Details Panel控制。
根据打开对象的不同,详细面板显示的内容会有所不同。
打开一个物理磁盘时,详细面板会显示该物理磁盘的型号(Model)、序列号(Serial No)、固件版本(Firmware Rev)、当前编辑模式、当前状态(磁盘内容是否经过修改)、总容量、每扇区字节数、当前位置所属分区号、在分区中的扇区号、当前指针所在区域(十六进制区/文本区)、字符集、偏移坐标表示形式等一系列信息。
打开一个逻辑磁盘时,详细面板会显示该逻辑分区在物理磁盘上的分区号、空闲百分比、文件系统类型、编辑模式、状态、当前簇号、当前扇区所属文件、当前扇区物理扇区号、当前扇区逻辑扇区号、分区已用空间、分区空闲空间、总容量、每簇扇区数、空闲簇数、总簇数、每扇区字节数等信息。
8.偏移纵坐标
与偏移横坐标配合,唯一地标识十六进制区域中每个字节的偏移地址。在偏移纵坐标区内单击,可以使偏移坐标的表示形式在十进制和十六进制间进行转换。
9.偏移横坐标
与偏移纵坐标配合,唯一地标识十六进制区域中每个字节的偏移地址。
10.十六进制区
以十六进制形式表示磁盘上的存储内容,是主要的工作区域。
11.文本字符区
根据选择的字符集,以文本字符形式显示磁盘上的内容。
12.当前扇区号/总扇区数
显示当前光标所在的的扇区号以及整个磁盘的总扇区数。在该区域单击会弹出“转到扇区”对话框。在该区域右击则会弹出拷贝当前扇区号或总扇区数快捷菜单。如图4.14所示。
图4.14
13.光标当前位置偏移值及当前字节十进制值
标明光标当前位置的偏移值以及由当前字节开始的若干个字节的十进制值。
(1) 在偏移值部分单击会弹出转到偏移量对话框;在偏移值部分右击会弹出一个快捷菜单,如图4.15所示。
图4.15
右键快捷菜单中,提供了拷贝光标当前位置偏移量的十进制值和十六进制值的菜单项,还提供了一个相对记录偏移菜单项Relative record offsets,点击该菜单项会弹出设置对话框,如图4.16所示。
图4.16
* Apply different background color:使用不同的背景颜色。勾选该项后,程序会按下面Fist record at offset框中设置的起始偏移位置和Record size in bytes框中设置的间隔记录大小字节数对显示内容使用不同的背景颜色,以便于用户区分。
* Relative record offsets:使用相对记录偏移。勾选该项后,程序会以下面Fist record at offset框中设置的起始偏移位置为相对偏移0,该偏移0后的字节偏移都以该偏移0位置为基准。
* Fist record at offset:起始偏移位置,十六进制。根据勾选项的不同,做为使用不同背景颜色的起始偏移,或做为相对偏移0的位置。
* Record size in bytes:记录大小,十进制。勾选了使用不同背景颜色项后,每隔这个“记录大小”的字节数,交替更换一次背景颜色。
(2) 在“光标当前位置字节值(十进制)”区域单击,会弹出十进制解释器设置框,如图4.17所示。
图4.17
十进制解释器设置框用于设置将光标当前所在位置开始的几个字节解释为十进制数值,以及将其做为有符号还是无符号数值进行解释。例如,设置为8bit,unsigned将光标当前所在位置的这一个字节当做无符号数解释为十进制。如果设置为32bit,unsined,则将光标当前所在位置开始的4个字节做为无符号数解释为十进制值。
我们进行如下设置:
* 以偏移0x21字节处为相对偏移0,同时它也做为使用不同背景颜色的起始处,每隔32个字节更换背景颜色;
* 在十进制解释器中选择“32bit,unsigned”。
图4.18为设置后的界面结果,我们可以看到虽然实际上光标的位置并没有移动,但“光标所在位置偏移量”处的值发生了变化,因为现在以0x21字节处为相对偏移0,光标现在恰好处于这个位置,所以它的偏移位置为0。
同样,“光标当前位置字节值(十进制)”处的值也发生了变化,因为原来解释器解释的是1个字节,现在解释的是4个字节。
图4.18
另外,当设置了使用相对记录偏移后,在偏移值区域右击时弹出的快捷菜单中将增加一个“Absolute offsets”菜单项(见图4.19),它用于快速将“使用相对记录偏移”重新设置为“使用比对偏移”,即以磁盘的偏移0为偏移基准。
图4.19
还有一点,选择了使用相对记录偏移后,“当前扇区/总扇区数”部分将变成“当前记录号/总记录数”,单击该区域时也会相应弹出“转到记录”对话框。如图4.20所示。
图4.20
14.当前选块起/止偏移值及选块大小字节
如果选择了选块,会在这个位置显示选块的范围及选块的大小字节数。如图4.21所示,选块起始于偏移0x21,结束于0x30,所以选块范围显示是“21-30”;共0x10个字节,所以选块大小字节数部分显示“10”。
图4.21
在“当前选块起/止偏移值及选块大小字节”区域内单击,会弹出定义选块对话框,如图4.22所示。
图4.22
(1) Beginning:选块开始偏移。可以直接输入偏移值,也可以在后面的选项框中选择一个选项对应的对象做为选块起始位置,如图4.23所示。
* Current position:光标当前位置。
* Beginning of file:文件或磁盘的起始0字节处。
* Middle of file:文件或磁盘的中部。
* End of file:文件或磁盘的尾部。
* Beginning of block:选块起始处。如果当前有选块被选中,则将选块的起始处做为新选块的起始。
* End of block:选块结尾处。如果当前有选块被选中,则将选块的结尾处做为新选块的起始。
图4.23
(2) End:选块结束偏移。可以直接输入偏移值,也可以在后面的选项框中选择一个选项对应的对象做为选块结束位置,其选项内容与选项含义与定义选块起始位置相同。
4.3.5 工具栏详解
1.
:新建文件
用于新建一个RAW文件(也可以通过菜单File→New或快捷键Ctrl+N实现同样的功能)。点击该图标会弹出创建新文件对话框,如图4.24所示。可以通过在对话框中输入数值并选择单位(Bytes/KB/MB/GB)来创建一个新的文件。新建的文件会被程序直接打开,在对其进行保存前只存在于内存中。注意不要创建太大的文件,否则可能会造成资源耗尽。
图4.24
2.
:打开文件
“打开文件”的菜单功能位于File→Open,快捷键Ctrl+O。用于打开一个已经存在的文件,Winhex程序打开文件时不关心它的文件类型,只是以十六进制形式打开它。
3.
:保存
新建了一个文件,或对一个已经存在的文件或磁盘内容进行修改后,该按钮将处于活动状态,用于对未保存的内容进行保存。
4.
:打印
用于发送打印指令。
5.
:文件属性
用于对一个文件的大小、时间信息等进行编辑,如图4.25所示。编辑完成后按回车键,程序将提示编辑结果立即生效,如图4.26所示。
图4.25
图4.26
.6.
:打开文件夹
用于同时打开一个文件夹下的多个文件。点击后弹出图4.27所示的文件夹选择窗口。
图4.27
掩码:可以打开文件夹下的所有文件,也可以通过设置掩码打开某种指定的文件,例如设置掩码为“.doc”打开所有的Word文档。
* 打开方式:打开文件的方式,包括只读方式及可修改方式。
* Must contain specified test:包含指定的文本。点击后弹出查找文本对话框(对话框设置见后面的“文本搜索”),可以在对话框中输入文件中需要包含的文本。不过,Winhex对中文的搜索支持不好。
* Must contain specified hex values:包含指定的十六进制值。点击后弹出十六进制搜索对话框(对话框设置见后面的“十六进制搜索”),可以在对话框中输入需要包含在文件中的十六进制值。
* Include subfoders:包括子文件夹。勾选该项后,不只打开当前文件夹下的文件,还会打开当前文件夹下的子文件夹。
7
:撤销
用以撤销刚进行的操作。比如对某个字节进行了修改后,想撤销修改,可以点击该按钮。
8.
:复制选块
用以将选中的选块复制到剪贴板。该功能并不是太方便,我们将在后面介绍更为实用和方便的右键快捷菜单。
9.
:写入选块
将剪贴板中的内容从指定当前所在位置写入。同样,我们建议使用后面介绍到的右键快捷菜单中的相同功能。
10.
:转换文件
只对打开的文件有效。点击后弹出转换选择框,如图4.28所示,可以在转换选择框中选择需要进行的转换。
图4.28
11.
:修改数据
用于对选块选或文件数据进行各种处理,可以用来对数据进行简单的加密。点击该按钮后将弹出修改数据设置框,如图4.29所示。
图4.29
* Add:将选块中的数值与Add后输入框中的值相加。
² 通过是否勾选后面的“hexadec”控制设定输入框中的值是十进制还是十六进制。
² 点击Integer type后的 按钮,可以弹出整数类型选择框(如图4.30所示),用于设定选块或文件中数据的单位长度,假设有一个数值0x940239F1C2040001,以Little-endian顺序存储在磁盘上为“01 00 04 C2 F1 39 02 94”加“1”为例,如果选择“8bit,signed”表示将“01 00 04 C2 F1 39 02 94”的每个字节做为一个单位长度,即每个字节加“1”,变成“02 01 05 C3 F2 3A 03 95”;如果选择“16bit,singned”则将“01 00 04 C2 F1 39 02 94”的每两个字节做为一个单位长度,将每个单位长度的数值加“1”,即将原数据分解成“0100”、“04C2”、“F139”、“0294”后对每个数值进行加“1”处理,因为是Little-endian存储顺序,所以每个单位的数值分别变为“0200”、“05C2”、“F239”和“0394”,即原数值在磁盘上的存储形式变为“02 00 05 C2 F2 39 03 94”。
图30
² Excess of integer type range部分用于设置当相加后的结果超出Integer type中设定的整数类型能够表示的数值大小范围时如何处理。以在integer type中选择了“8bit,unsigned”为例(可表示的数值范围是0~255),将0xFE(十进制为254)加“2”,由于254+2=256,超出了8bit可表示的最大值范围,如果选择“No,use limit as new value”,即不允许超出,而是将可表示的最大值做为结果,则计算结果为0xFF;如果选择了“Allowed”,则计算方式是将超出了最大表示范围的结果值减去可表示的最大值,即256-255=1,结果为1。同样,如果计算结果小于0时,选择“No,use limit as new value”则将0做为结果;选择“Allowed”将计算后小于0的结果加上可以表示的最大值。
² 如果要将通过Add处理后的结果回复原状态,使用同样的设置减去原来加上的值即可。
* 16-bit byte swap:以16个bit为单位,将每个单位中的前后两个字节交换位置。假如有一个数值在磁盘上的存储形式为“01 02 03 04”,处理时将其分解为“01 02”和“03 04”,然后将每个单位中的两个字节交换位置,即分别变为“02 01”和“04 03”,再组合到一起成为“02 01 04 03”。
* 32-bit byte swap:以32个bit为单位,将每个单位中的4个字节前后顺序交换。
* Left shift by 1 bit:左移一位,将每个字节左移一位。例如,如果某个字节的值为0x04,换算成二进制后是0000 0100,左移一位后变成0000 1000,即0x08。
* Right shift by 1 bit:右移一位,将每个字节右移一位。例如,将0x04右移一位变成0x02。
* Shitf by…byte(s):将选块内容向左或向右移动若干个字节,负数为向左,正数为向右。实际结果是将当前选块复制后从向左或向右后的若干个字节位置写入。
* Circular left rotation:左移本身个字节。例如,数值本身为4,则左称4个字节;数值本身为5,则左移5个字节。
* Invert bits:反转。用0xFF减去每个字节的当前值,将结果做为当前字节的新值。例如,当前字节为0x02,反转后的值是0xFF-0x02 = 0xFD。
* XOR:异或运算。将每个字节的当前值与设定的值进行异或,结果做为当前字节的新值。
* OR:或运算。将每个字节的当前值与设定的值进行或运算,结果做为当前字节的新值。
* AND:与运算。将每个字节的当前值与设定的值进行与运算,结果做为当前字节的新值。
* ROT13:字母置换。ROT13将26个英文字母分为两组,每组13个,然后将两组字母按先后顺序一一对应,置换时按这个对应关系进行置换。如图4.31所示。
图4.31
12.
:查找文本
用于查找文本字符(对汉字搜索支持不好)。点击后弹出查找文本对话框,如图4.32所示。
图4.32
* Match case:区分大小写。勾选该项后,搜索中将完全匹配字母的大小写,默认是忽略大小写。例如,要搜索“Test”,但输入的是“test”,如果不勾选区分大小写选项,程序可以搜索到;如果勾选了区分大小写,则程序只严格搜索“test”,大小写不一致的将不会被做为结果目标。
* 编码选择:设置搜索ASCII码/Unicode码。
* Use this as a wildcard:设置通配符。例如,要搜索所有后三个字母为“est”、由4个字母组成的单词,可以勾选该选项并设定一个通配符,同时配合勾选下面的Whole words only(全字符匹配)进行搜索。例如可以使用“?”做为通配符,搜索“?est”。
* Whole words only:全字符匹配,即搜索目标和结果需要整个单词完全匹配。
* 搜索方向:用于设置在整个磁盘或文件范围内进行搜索,还是由当前位置开始向上或向下搜索。
* 偏移设置:设定符合要求的目标位置,用以减少干扰信息。例如要搜索位于每个扇区偏移96字节处的某字符,可以设置为MOD 512 = 96,即只有偏移位置除以每扇区字节数512余数为96字节的位置才符合要求。这些位置的偏移可能会是0+96、512+96、1024+96等等,其他位置的相同字符将不在搜索结果内。
* Search in block only:只在选块内搜索。如果确定搜索目标就在某个范围内,可以选中该选块,这时Search in block only选项将变成可选状态,勾选后即可实现只在设定的范围内搜索目标。
* Search in all open windows:在所有打开的窗口中搜索。如果打开个一个以上的对象,则该选项处于可选状态,勾选后程序会在所有打开的窗口中搜索目标。
* List search hits,up to:将搜索结果列表显示,可以设定显示的搜索结果数量。
13.
:查找十六进制值
用于查找指定的十六进制值。点击后弹出查找十六进制对话框,如图4.33所示。
图4.33
相找十六进制对话框内的设置与查找文本对话框基本相同,不同的只是输入搜索的内容为十六进制值,而不再是文本。另外就是通配符要使用一个十六进制值,而不能使用文本。
14.
:替换文本
用于搜索指定的文本内容,并将其替换为设定的文本。如果点击该按钮后弹出图4.34所示的“Only available in-place edit mode”提示框,说明当前操作对象要求程序处于in-place模式才可以运行。这时,可以点击菜单Options→Edit Mode(如图4.35所示),在弹出的模式选择框中选择“In-place Mode (=editable)”选项(如图4.36所示)。
图4.34
图4.35
图4.36
点击替换文本按钮后会弹出替换文本对话框,如图4.37所示。
图4.37
* Search for:搜索目标,也是将要被替换的文本,如“test”。
* Replace with:做为替换结果的新文本,如“1111”。
* Prompt when found:搜索到目标后提示是否进行替换。选中该项后,程序搜索到符合被替换文本要求的目标时会弹出提示框,询问是否要对当前偏移位置的内容进行替换,按“Yes”按钮进行替换,按“No”不对当前位置的目标进行替换,继续搜索下一个位置的目标。如图4.38所示。
图4.38
* Peplace all occurrences:不提示,直接替换所有搜索到的符合替换要求的目标。
15.
:替换十六进制值
用法与替换文本相同,只是该功能用于搜索和替换十六进制值。
16.
:同时搜索文本
用于同时搜索两个以上文本对象。Winhex可以设置同时搜索两个以上文本对象,这在有多个对象需要搜索时非常有益。对于相互间没有关联的若干个文本对象,可以在一次搜索过程中完成对它们的搜索;对于某个搜索对象,如果由两个以上文本对其进行限定,使用“同时搜索”功能就可以大大增加搜索的精确度。
大多数选项与前面介绍的其他搜索设置相同,我们只介绍几个该搜索功能特有的选项,如图4.39所示。
图4.39
* 搜索内容框:搜索内容框用于输入要搜索的目标文本,每个目标文本占用一行。
* 保存文件:可以将输入搜索内容框中的搜索内容保存成一个文件,以便于以后搜索相同(或包含部分相同内容)时减少输入量。
* 打开文件:打开一个以前保存过的搜索内容文件。
* 搜索方式:有两个单选项――逻辑搜索和物理搜索。只有打开磁盘时才会出现“搜索方式”选择项,如果目前打开的只是一个文件,则不会出现该选择项。
* Logical(file-wise):逻辑搜索。逻辑搜索是指按逻辑存储在文件中进行遍历搜索。
* Physical(sector-wise):物理搜索。物理搜索即不考虑逻辑存储关系,针对物理扇区进行搜索。
17.
:转到某偏移量
用于将光标跳转到某偏移量位置。点击后弹出跳转到偏移量对话框,如图4.40所示。
图4.40
* New position:新位置,即要跳过的数量(单位以输入框后的单位设置按钮显示的单位为准)。输入的数值可以是十进制也可以是十六进制,这取决于偏移量坐标的表示形式――如果偏移量坐标是十进制,则此处输入的是十进制;如果偏移量坐标是十六进制,则此处输入的是十六进制。
* 单位设置按钮:位于跳转数量输入框后面,每按一次,跳转单位在扇区(Sectors)、字节(Bytes)、字(Words)、双字(Dwords)之间循环变化。
* Beginning:从当前对象窗口的偏移0处向偏移量较大方向跳转。
* Current position:从光标所在的当前位置向偏移量较大的方向跳转。
* Current position (back from):从光标所在的当前位置向偏移量较小的方向跳转。
* End(back from):从当前对象窗口的最大偏移量处向偏移量较小方向跳转。
18.
:转到某扇区
跳转到某个指定的扇区。根据打开的对象不同,界面输入框也略有不同――如果打开的是物理磁盘,则只可以输入扇区号(或输入三维在址号);如果打开的是一个可支持的逻辑磁盘,则既可以输入扇区号,也可以输入簇号(Cluster,簇号将在文件系统部分介绍)。如图4.41所示。
图4.41
19.
:到上一个位置
回到前一个采样位置。
20.
:到下一个位置
回到下一个采样位置。
21.
:打开磁盘
打开一个物理或逻辑磁盘。
22.
:克隆磁盘
用于无压缩的扇区级磁盘克隆,将在后面进行详细介绍。
23.
:打开内存
Winhex支持直接对内存进行编辑,点击后将弹出编辑内存选择框,可以在选择框中选择要进行编辑的内存。如图4.44所示。
图4.44
24.
:计算器
调用计算器。
25.
:磁盘或选块分析
用于计算被分析对象中各个值出现的次数及占用的百分比等。
26.
:常规设置
用于设置程序的一些常规属性,将在后面专门进行介绍。
27.
:减少一列
每点击一次就会将界面中十六进制窗口显示的列数减少一列。
28.
:增加一列
每点击一次就会将界面中十六进制窗口显示的列增加一列。
29.
:重新获取卷快照
Winhex可以对卷进行快照,即记录卷中的管理信息。当卷发生改变后可以点击该按钮重新获取卷的快照。
30.
:目录浏览器设置
用于设置目录浏览器的一些属性。
31.
:帮助
用于调用帮助文件。
4.3.6常规设置
常规设置用于对Winhex程序中的一些常规属性进行设置,如程序启动反应、可运行程序数量、是否更新文件时间等。
点击工具栏的常规设置按钮 ,或选择菜单项Otions→General,或者按快捷键F5都可以调出常规设置对话框,如图4.45所示。
图4.45
- Show Start Center at startup
该条有两种选项,用鼠标点击时会在Show Start Center at startup和Restore last window arrangement间进行转换。
u Show Start Center at startup:启动程序时显示启动中心。选中该项后,程序启动时会首先显示一个启动中心窗口,如图4.46所示。
图4.46
² 打开文件按钮Open Flie:用于打开一个文件。
² 打开磁盘按钮Open Disk:用于打开一个磁盘。
² 打开内存按钮Open RAM:用于打开内存。
² 打开文件夹按钮Open Foldder:用于打开一个文件夹。
² 最近打开的对象列表:用于显示最近打开过的对象,列表中可显示的最多数量由设置对话框中第二行的 项决定,用户可以自行设定可显示的对象最多数量。
² 脚本列表:显示可用的脚本,属于高级功能,用户可以自行编写脚本,以实现更为强大而细腻的功能。脚本编写完毕并放入相应的目录后,将会在该列表中显示。
u Restore last Window arrangement:选中该项后,如果在关闭Winhex程序前没有将打开状态下的磁盘、文件或其他对象窗口关闭,重新运行Winhex程序时会自动打开这些对象,并保持上次关闭时该对象的状态。
- Items in Windows context menu
在Windows上下文菜单中显示菜单条目。勾选该项后,将会在Windows中右击一个文件夹或文件时分别显示Open Folder in WinHex或Open in WinHex。如图4.47、图4.48所示。
图4.47
图4.48
- Allow multiple program instances
允许多个程序实例。如果不勾选该项,在同一时刻只能运行一个Winhex程序。勾选该项后,可以同时运行多个Winhex程序。这个功能非常实用,假如用户正在用一个Winhex程序进行搜索或恢复数据,可以同时打开另一个Winhex程序对某个磁盘或文件进行分析。
- Do not update file time
禁止更新文件时间。如果勾选了该项,在Winhex中对某个文件进行修改并保存后,文件的最后修改时间将保持上次修改时的时间值。如果不勾选该项,时间值将会修改为当前时间值。如图4.49所示,勾选该项后,对U.nrg文件进行修改并保存后,时间值仍然保持上次的修改时间值2009年12月1日;而不勾选该项再次对u.nrg文件修改并保存后,它的修改时间被设置为当前时间2009年12月25日。
图4.49
- Open data windows maximized
打开数据窗口时最大化。勾选后,打开一个对象时,该对象窗口将最大化显示。
- WinHex context menu
WinHex上下文菜单。勾选后,在打开的对象窗口中右击,会弹出右键快捷菜单,可以利用该菜单设定选块的起始结束位置、调出下一级编辑菜单等。如图4.50所示。
图4.50
- Show file jcons
显示文件图标。如果勾选了该项,打开某个文件时,Winhex会在详细面板中显示该类文件的图标。
- Number partitions by disk location
根据物理位置列出分区及对分区进行编号。勾选该项后,在打开一个物理磁盘时,如果该磁盘上存在分区,程序会按每个分区在磁盘上的物理前后位置显示它们并为它们编号,而不是用为它们分配的盘符顺序排列。如图4.51所示。
图4.51
- Auto-detect deleted pqrtitions
自动检测被删除的分区。勾选后,打开一个物理磁盘时,程序会自动检测磁盘中被删除的分区。我们将一个磁盘的第三个分区删除(如图4.52所示),用Winhex打开物理磁盘后,Winhex可以自动识别到它,并将其标记为“lost”。如图4.53所示。
图4.52
图4.53
- Sector reading cache
将读取的扇区保存在缓存中。该选项对于在Winhex窗口上下拉动查看光盘或软盘内容时很有用,如果每次拉动查看都去直接读取光盘或软盘,由于它们的访问速度有限,会造成反应迟缓。
- Check for suplus sectors
检查剩余扇区,勾选该项可能会导致打开磁盘时延时较长。
- Aternative disk access method
设置硬盘的访问方式,可以设定可读取非标准硬盘以及遇到坏扇区时的读取超时毫秒数。
- Substitute pattem for unreadable sectors
当某扇区无法正确读取时,用该框中预先设置的内容对其进行填充,默认是“UNREADABLESECTOR”,即“无法读取的扇区”。
- Folder for temporary files
临时文件目录,默认为“C:\Documents and Settings\“用户名”\Local Settings\Temp”,可以自行修改至其它位置。
- Folder for images and backup files
镜象及备份文件存放路径,默认为“C:\Documents and Settings\“用户名”\Local Settings\Temp”,可以自行修改至其它位置。
- Folder for cases and projects
案件及方案存放路径,默认位于程序安装目录内,可自行设置到其他位置。
- Folder for scripts
脚本存放路径,默认位于程序安装目录内,可自行设置到其他位置。
- Gallery:Show pictures in archives
在文档中显示图片。根据版本的不同,该功能可能会有所不同。
- Show video preview pictures
显示图片预览。根据版本的不同,该功能可能会有所不同。
- Windows-styled progress bar
Windows样式进度条。用以设置进度条的样式,勾选后会使用Windows样式。
- Display time zone
时区设置。点击后会弹出时区设置选择框(见图4.54),可以在选择框中选择适当的时区。
图4.54
- Generate 0x..with Enter
如果勾选了该项并在设置框中设置了某十六进制数值,那么当按下回车键时,程序会由当前光标所在位置写入设置框中所设置的内容。
- Generate Tabsb with Tab key
不勾选该项,Tab键用于使光标在十六进制区和文本区进行跳转;勾选该项后按Tab键将会在光标当前位置写“09”。
- <0x20 substitute character
小于0x20的非打印字符可以替换成用户自行指定的字符。
- Display bytes as test one by one
将每个字节看做一个文本字符。这个选项是否勾选对文本区的内容显示有很大的影响,通常应该不勾选该项,这样Winhex就会尝试将字节组合起来形成一个可识别的文本字符。如图4.55所示,不勾选该选项和勾选该选项有时会有很大的区别,尤其是中文字符的显示。上方是未勾选的结果,下方是勾选后的结果。
图4.55
- Hexadecimal offsets
用十六进制表示偏移量。勾选该项后,偏移量横、纵坐标使用十六进制值表示;否则使用十进制值表示。
- Virtual addresses in RAM editor
编辑内存时使用基于0x00的虚拟地址,而不是被编辑对象在内存中的实际地址。
- Display page separators
控制是否对磁盘或文件页面进行每512字节间隔。
- ...bytes per line
界面中每行显示的字节数,默认为16个字节。
- ...byte groups
每组字节数,默认为8个字节一组,分为左右两组。
- ...units to scroll on a wheel roll
鼠标滚轮每滚动一个齿格使界面内容上下移动的行数。
- Dialog window style
按下键头按钮控制当前设置框窗口的外观样式。
- MFT FILE record auto coloring
给NTFS文件系统的MFT记录加上颜色,以突出显示,便于区分。
- Block backgrornd color
选块背景颜色。
- Record backgrnd color
记录背景颜色。
- Annotation color
标签颜色。
- Hilite modified bytes
醒目显示修改过的内容。
- Font
字体。
4。.3。7 重新获取卷快照
卷快照是文件系统分区在某个时刻的目录数据库,如果文件系统分区的内容发生了改变,就需要重新获取其快照。点击工具栏的 按钮或选择菜单Specialist→Refine Volume Snapshot即可弹出重新获取卷快照对话框,如图4.56所示。
图4.56
- Take New one
重建快照。勾选该项后会获取并重新建立一个快照。
- Particularly thorough file data structure search
搜索文件系统。勾选该项后会在重建快照的过程中搜索分区中未被元数据描述的数据。
- File header signature search
搜索特定的文件头。勾选该项并在弹出的文件类型选择框中选择要搜索的文件头后,重建快照的过程中会搜索该文件类型。
- Compute hash
计算hash值。勾选该项并在弹出的校验方式选择框中选择好校验方式后,在重建快照的过程中会同时计算并生成hash值。
4.3.8 目录浏览器设置
目录浏览器设置用于设置目录浏览器的一些功能属性。点击工具栏的 按钮或选择菜单Options→Directory Browser..即可调出目录浏览器设置框,如图4.57所示。
图4.57
在此我们只介绍几个常用的选项。
- Group files and directories
分组显示文件和目录。我勾选该项后目录浏览器中的内容将会按文件和目录进行分组显示。
- Group existing and deleted items
分组显示存在和已删除的条目。勾选该项后,目录浏览器会将内容分为正常与已删除两组进行显示。
- With Ctrl+A include “x” files also
勾选该项后,使用Ctrl+A对目录浏览器中的内容进行全选时会包括标识为“X”的内容(即已删除的内容)。如果不勾选该项,则按下Ctrl+A时只选中正常存在的内容。
- List previously ex.items
列出曾经存在过的条目。勾选该项后,已被删除内容的条目将会显示在目录浏览器中。如果不勾选该项,则只显示正常存在的内容。
4.3.9 克隆磁盘
Winhex提供了克隆磁盘的功能,并单独提供了一个克隆磁盘菜单命令,不仅可以将磁盘克隆至磁盘、将磁盘克隆为文件,还可以将镜像文件回写至磁盘。
克隆功能与后面将要介绍的Winhex镜象制作功能不同的是克隆功能不提供压缩选择,也就是完全按照1:1的比例进行克隆。
步骤1:如图4.58所示选择Tools→Disk Tools→Clone Disk菜单命令,即弹出如图4.59所示的克隆磁盘对话框。
图4.58
图4.59
步骤2:在克隆磁盘对话框中,可以进行相应的克隆设置。下面我们按图()所标注的标号进行解释。
(1) 来源设置
单击磁盘选择按钮 ,将弹出如图4.60所示的来源磁盘选择对话框,上半部分的Logical Drive Letters中显示的是各个逻辑分区;下半部分的Physical Media为物理磁盘。既可以在对话框中选择逻辑分区作为克隆操作的来源磁盘,也可以选择一个物理磁盘作为克隆操作的来源磁盘。双击要选择的磁盘或单击该磁盘后单击OK按钮,即可选中。
单击文件选择按钮 将弹出文件路径选择对话框,可以选择一个已经存在的镜像文件作为镜像至磁盘的来源。
(2) 目标设置
单击磁盘按钮 将弹出目标磁盘选择对话框,目标磁盘可以是一个逻辑分区,也可以是一个物理磁盘。
单击文件保存按钮 将弹出文件保存路径选择对话框。只有当来源为磁盘时,才可以进行保存镜像文件操作。如果在来源中选择了一个镜像文件,目标仍然选择文件时,克隆对话框中的OK按钮将显示为灰色不可操作状态。
图4.60
(3) 克隆整个磁盘选项
默认情况下该选项将会被勾选,在勾选状态下,根据来源与目标的选择情况不同,标注号4、5、6位置有可能处于灰色不可操作状态。
(4) 克隆来源起始扇区号
在未勾选“克隆整个磁盘”选项的情况下,可以设置来源磁盘或文件的起始扇区号,镜像将从该扇区位置向后进行。
(5) 目标磁盘起始扇区号
如果目标为磁盘,则可以在此处设置从磁盘的哪个扇区开始写入。
(6) 克隆扇区数量
可以在此处设定要克隆的扇区数。
(7) 日志
用于记录克隆结果,例如克隆扇区数、是否有无法读取的坏扇区及坏扇区的数量等。
(8) 遇到坏扇区时跳过的扇区数
如果勾选了此项,克隆过程中遇到无法读取的坏扇区时,程序将会跳过设定的扇区数量后继续进行克隆。
(9) 为损坏的扇区写入标记
如果勾选了此项,在读取来源磁盘时如果遇到无法读取的坏扇区,则会在目标盘的相应扇区中写入该标记。
(10) 同时进行输入输出操作
如果来源磁盘和目标磁盘为不同的物理磁盘时,勾选此项可以提高克隆的速度。
了解了各个选项的含义后,我们来看一下使用默认参数将TF卡镜像成文件的设置界面内容,如图4.61所示。
图4.61
步骤3:确认无误后,单击OK按钮,即开始镜像,如图4.62所示。
图4.62
步骤4:镜像完毕后,将会给出提示并以文件形式给出克隆结果。
4.3.10 创建磁盘镜象
除了克隆功能菜单,Winhex还提供了制作磁盘镜象的功能菜单,用以将磁盘保存为可压缩的镜象文件(是否压缩可自行决定)。
在打开一个磁盘后,选择菜单File→Create Disk Image,即可弹出建立磁盘镜象对话框,如图4.63所示。
图4.63
- Image file format
镜象文件格式。可以选择制作成后缀名为.dd、.001、.img的Raw格式,也可以制作为以.whx为后缀的Winhex备份文件。
如果选择了第一项的Raw image格式,制作完成后的镜象可以直接在Winhex中打开。但如果在制作镜象文件过程中使用了压缩功能,则文件的拷贝会稍有不便,因为虽然压缩过的镜象文件占用空间较小,但拷贝时会被解压缩,这也就意味着拷贝至的目标位置空间不能小于镜象未压缩前的原始大小。
.whx备份文件可以视为由Winhex生成的一种专门的数据库文件,即便在镜象制作过程中对镜象文件进行了压缩,对镜象文件进行拷贝时也不存在被解压缩的问题,因为这种压缩是由Winhex本身完成的,对于系统而言它并不是压缩的,而只是一个普通的文件而已。但在Winhex中打开.whx文件时,要么需要回写入一个磁盘,要么需要建立一个临时文件,要么需要将其解压缩另存为一个Raw类型的镜象文件。
提示:不需要进行拷贝传输或经常使用的,应该考虑制作成Raw格式镜象;如果需要拷贝传输,则应该考虑制作为.whx类型的备份文件。
- Path and filename
路径及文件名。设定保存镜象文件的路径位置和文件名。
- Power down computer after completion
任务完成后关闭计算机。如果勾选了此项,镜象制作完成后计算计算机将会自动关闭。
- Scope:sectors
镜象扇区范围。如果选择制作Raw格式镜象,起始扇区处理不可选状态,只能由0号扇区开始。如果选择制作Winhex备份文件,则镜象扇区的起始和结束位置都可以自行设定。
- Compute hash
计算hash值。勾选该项后,程序会按设定的校验方式计算hash值。
- Compression
压缩方式。可以在此选择是否对镜象文件进行压缩,以及压缩的方式。
- Split image into segments of..
将文件拆分为指定的大小。如果要使用光盘存储镜象文件,可以勾选此项并设定相应的单个文件大小,程序会按该指定的大小将镜象文件拆分成若干个文件,便于保存。
4.3.11 回写磁盘镜象
Winhex可以将镜象文件重新回写入一个指定的磁盘,该功能可以通过选择菜单File→Restore Image调用。
- 回写非.whx文件
调用后将出现图4.64所示的文件选择框,默认文件类型为.whx,如果你的镜象文件是.001、.dd之类的非.whx备份文件,则可以在“文件类型”小窗口中进行类型选择,以使你所需要的文件出现在上面的文件选择窗口中。
图4.64
选择好镜象文件后双击该文件或点击“打开”,就会弹出目标磁盘选择框,可以在选择框中选择镜象要恢复至的磁盘。
选择好目标磁盘后点击OK,磁盘窗口关闭,显示克隆磁盘窗口,如图()所示。点击OK按钮即可开始写入磁盘。
- 回写.whx文件
如果将.whx类型的文件回写入磁盘或试图将一个.whx类型文件拖入Winhex窗口将其打开时会弹出图()所示的对话框(使用Winhex的“打开文件”功能则不会弹出此对话框),由用户选择是否将其写回某磁盘以及写入磁盘的方式。
图4.65
(1) Write to the disk only on save request
只在接到写入请求后将数据写入磁盘。选择此项后,Winhex并不将数据直接写入磁盘,只有当用户下达保存入磁盘指令后才真正写入磁盘。
(2) Write sectors directly and immediately to the disk
直接写入磁盘。
注意,选择此项后,镜象文件会被直接写入对话框下面设定的目标磁盘内。如果选择错了目标磁盘,被破坏的磁盘上的数据将无法恢复。
(3) Export sector(s) into a raw,headerless image file
将当前.whx文件转换成其它类型的镜象文件。选择该项后,程序会将当前的.whx文件输出为一个指定类型的镜象文件并保存在指定的路径。
(4) Extract sectors
提取扇区数。可以在此设定要从镜象中提取的扇区数量。
(5) Base destination sector
基准扇区号。即从哪个扇区开始提取。
(6) Destination disk
目标磁盘。可以在此选择将要写入的目标位置磁盘,一定要慎重选择,避免错写入其他磁盘造成数据破坏。
用户可以根据需要自行选择相应的功能选项,具体操作不再赘述。
4.3.12 右键定义选块
Winhex中提供了很多右键菜单,使用起来非常方便。
我们经常会在Winhex中对某一区块进行操作,比如复制、粘贴等。对于较小的选块,可以直接按住鼠标左键由起始偏移位置移动结束偏移位置进行选取;要选取整个文件或磁盘,可以按键盘上的Ctrl+A进行全选;但对于较大范围部分选块的选取,右键菜单中提供的定义选块功能就显得更加实用且方便了。
在Winhex中打开一个文件或磁盘,在十六进制区或文本字符区内要做为选块起始的偏移位置右击,在弹出的菜单中选择Beginning of block(选块起始)或按键盘上的Alt+1将指针当前位置设定为选块的起始位置,如图4.66所示。
图4.66
图4.67
跳转到要做为选块结束位置的偏移字节处,在该位置右击,在弹出的菜单中选择End of block(选块结束)或按键盘上的Alt+2,将当前位置设定为选块结束位置,如图4.67所示。
选块范围设定完毕后,被选中的部分将以设定的选块颜色醒目显示,这时就可以对其进行后续操作了。
4.3.13 右键菜单之“撤销操作”
在对某个文件或磁盘内容进行修改前,我们首先应该了解如何对已进行的修改操作进行撤销,以使我们可以有机会更改错误的操作。
如果在Winhex内对文件或磁盘内容进行了更改后尚未关闭该操作对象,若要撤销该更改操作,可以右击,在弹出的菜单中选择Edit→Undo或按键盘上的Ctrl+Z进行回滚操作,如图4.68所示。
撤销操作并不是可以无限制地进行的,所以在更改操作中应该尽可能地做到准确无误。
图4.68
4.3.14 右键菜单之“剪切选块”
在Winhex内,剪切操作只对文件有效,且被操作的文件必须以页面形成显示,不能被解释为磁盘。
在要对其进行剪切操作的选块内右击,在弹出的菜单中选择Edit→Cut或按键盘上的Ctrl+X后,会弹出确认对话框,告知用户剪切掉当前选块内容将会使文件减小,是否确认进行剪切操作,点击Yes按钮确认后即开始剪切。
剪切操作只在内存中进行,要保存剪切后的文件,需要对其进行保存操作。
4.3.15右键菜单之“拷贝选块”
Winhex提供的复制功能非常丰富而细腻,可以进行各种各样的复制操作。操作菜单位于右键菜单Edit→Copy Block菜单下,如图4.69所示。
图4.69
下面我们对各个复制命令菜单进行介绍,操作时,在被操作的选块内右击,然后选择相应的操作命令即可。
- Normally
常规复制。常规复制是Winhex中最普通、使用最为广泛的复制方式。它适合在Winhex窗口的工作区内进行复制、粘贴、写入操作。
如图4.70所示。我们要将偏移0x00处起始的16个字节复制后写到偏移0x20处起始的16个字节,可以首先选中0x00~0x0F这16个字节,然后在选块内右击,选择Edit→Copy Block→Normally菜单项,内容即被复制到剪贴板。
图4.70
然后在要写入的位置0x20处右击,选择Edit→Clipboard Data→Write将内容写入到该位置起始的16个字节处,如图4.71所示。关于clipboard Data内的菜单项,我们将在后面进行详细介绍。
图4.71
图4.72显示了写入后的情形,可以看到,0x00~0x0F字节处的16个字节已经被成功复制并写入到了0x20~0x2F处的16个字节处。但这个操作只是在内存中发生了改变,如果要将改变结果写入磁盘,需要进行保存操作。
图4.72
- Into new file
右键菜单Edit→Copy Block→Into new file用于将选块内容重新写入、保存为一个新的文件。
例如,如图4.73所示,我们要将0x00~0x2F保存成一个新的文件,可以在选块内右击,选择Edit→Copy Block→Into new file。
图4.73
随后会弹出文件名设置与保存路径选择对话框,如图4.74所示。
图4.74
默认的文件名是noname,用户可以根据自己的需要对文件名进行设置,在此我们使用默认名,点击“保存”按钮后,文件保存成功并自动在Winhex中打开,如图4.75所示。
图4.75
- Hex Values
拷贝十六进制值。假如我们要将Winhex的十六进制窗口中的十六进制数据拷贝到一个文档内,就必须使用Winhex提供的拷贝十六进制值的功能。
图4.76显示了使用Edit→Copy Block→Normally进行常规拷贝和使用Edit→Copy Block→Hex Values进行十六进制值拷贝的不同结果,上面的Winhex窗口中是被复制的内容,记事本中上面的一行是常规拷贝的结果,下面一行是进行十六进制值拷贝的结果。
图4.76
- Editor Display
按编辑窗口显示的样式进行复制。该菜单项可以将Winhex窗口中显示的内容按其布局样式复制到文档中,如图4.77所示。
可以看到,记事本中精确地复制了Winhex窗口中的偏移值、十六进制内容及文本字符内容。
图4.77
- GREP Hex
复制十六进制值为GREP语法形式。该菜单项是便于使用GREP语法工作的用户将Winhex窗口中的十六进制值直接拷贝并转换成相应的十六进制书写形式,复制结果如图4.78所示。
图4.78
- C Source
复制十六进制值为C语言源码形式。该菜单项是便于使用C语言进行编程工作的用户将Winhex窗口中的十六进制值直接拷贝并转换成C语言源码形式。如图()所示,程序直接将复制的十六进制值做为无符号的字符数组输出。
图4.79
- Pascal Source
复制十六进制值为Pascal语言源码形式。该菜单项是便于使用Pascal语言进行编程工作的用户将Winhex窗口中的十六进制值直接拷贝并转换成Pascal语言源码形式,复制转换结果如图4.80所示。
图4.80
4.3.16 右键菜单之“剪贴板数据处理”
在Winhex中,复制的数据暂时保存在剪贴板中,右键菜单Edit→Clipboard Data菜单下的菜单项用于对这些数据进行处理。它包含Paste(粘贴)、Write(写入)、Paste Into New File(粘贴进新文件)和Empty Clipboard(清空剪贴板)四项,如图4.81所示。
图4.81
1.Paste
粘贴。用于将剪贴板内的数据粘贴到一个指定的位置,该操作只对文件有效,对磁盘无效。粘贴操作会增加目标文件的大小,因为粘贴时剪贴板内的内容被写入指定位置,指定位置原来的数据将向文件尾部移动。
假设有一个文件在Winhex中打开如图()上半部分所示,我们要将0x00~0x0F处的这16个字节复制后粘贴到0x20处。请注意,现在0x20~0x27处的8个字节内容是“01 02 03 04 05 06 07 08”, 该文件的大小字节数目前为0x9F个字节。
图4.82下半部分是粘贴后的结果,可以看到,0x20处被粘贴进了与0x00~0x0F的16个字节相同的内容,0x20处原来的“01 02 03 04 05 06 07 08”向后顺延了16个字节到了0x30处,文件大小字节数也由原来的0x90个字节增加了16个字节,变成0xA0个字节。
图4.82
2.Write
写入。“写入”操作与“粘贴”操作不同的地方在于,“粘贴”操作“插入”指定的位置,该位置的原有数据向后移动,无论粘贴的内容是多少(不为0字节)都会改变文件的大小;“写入”操作则是由指定的写入位置开始“覆盖”,如果由写入位置开始至文件结尾处的空间大于或等于要写入的内容,则文件的大小不会改变。如果由写入位置开始至文件结尾处的空间小于要写入的内容,文件则会被增大,增加的数量是写入的内容与写入点至文件结尾处的空间大小之差。
3.Paste Into New File
粘贴进新文件。如果剪贴板中的内容是Winhex十六进制值,则粘贴进新文件命令与前面介绍的拷贝菜单中的粘贴入新文件命令功能相同。如果剪贴板中的内容不是Winhex十六进制值,比如从其他文档中复制的数据,对其进行“粘贴进新文件”操作时会弹出格式选择框,如图4.83所示,应该根据需要选择相应的格式。
图4.83
4.Empty Clipboard
清空剪贴板。该菜单项用于清空剪贴板中的内容,以释放内存资源。
4.3.17 右键菜单之“移除选块”
右键菜单Edit→Remove用于删除选块内容,该菜单项只对文件有效。
移除选块操作将会减小文件的大小。如图4.84所示,我们要移除0x00~0x07字节处的8个字节,移除前该文件大小为0x9F个字节。移除后,原0x08至文件结尾处的所有字节向文件头部移动8个字节,文件大小也就为0x97个字节,减小了8个字节。
图4.84
4.3.18 右键菜单之“粘贴零字节”
右键菜单Edit→Paste Zero Bytes用于在指定的位置插入指定数量的“00”,该操作只对文件有效,且会增加文件的大小字节数。如图4.85(A)所示,我们要在偏移0x10的位置插入16个字节的“00”,则在该偏移位置右击,然后选择Edit→Paste Zero Bytes。
随后,程序会弹出对话框询问要插入的“00”的数量,以十进制计数,在此我们输入“16”,如图4,85(B)所示。
然后点击OK,程序即会向指定位置插入指定数量的“00”,如图4.85(C)所示,可以看到,文件由原来的0x95个字节增加为0xA5个字节。
图4.85
4.3.19 右键菜单之“填充选块”
有时候,由于各种原因我们可能需要对磁盘上的的某些数据进行清除,比如对一些敏感数据进行销毁,对干扰数据进行清零等。Winhex 提供的右键菜单项Edit→Fill Block可以满足这些需求。
要对某选块进行清零或使用其他数据进行填充,可以在选块内右击,然后选择Edit→Fill Block菜单项,随后会弹出填充选块设置对话框,如图4.86所示。
图4.86
- Fill with hex values
填充内容,可以自行设定任意十六进制值,默认为“00”。
- Simple pseudo-random numbers
使用随机数据。如果选择了该项,其下的随机数字设定范围将会处于可填写状态,可以在其中填入0~255间的任意数值范围。
后面的两个选项为使用加密数据填充,不再详细介绍。
设置完毕后点击OK按钮即开始填充操作。
4.3.20 跳转到页
在Winhex中打开一个文件后,如果要跳转到某页,可以选择Position→Go To Page菜单项(如图4,87),在弹出的跳转到页窗口中输入要跳转到的页号(如图4.88所示),即可精确地跳转到目标页。
图4.87
图4.88
不过,更多的时候我们会在Winhex中将文件解释为磁盘,具体操作见下一小节。
4.3.21 将文件解释为磁盘
有时候我们需要在Winhex中将打开的文件视为磁盘对待,比如磁盘镜象文件解释为磁盘后可以自动识别其中可识别的分区、文件系统;某些格式的文件其内部结构与大多数磁盘一样使用512字节为最小块等等。
Winhex将文件解释为磁盘的菜单项为Specialist→Interpret Image File As Disk,如图4.89所示。
图4.89
将一个包含Winhex可识别的正常的分区或文件系统结构的镜象文件解释为磁盘后,不仅便于使用Winhex直接加载其分区,更为重要的是在使用Winhex重组RAID时可以使该镜象文件象一个磁盘一样出现在Winhex的阵列成员盘选择框中。
如图4.90所示,SD_Format.img就是一个镜象文件,将其解释为磁盘后,在Winhex的阵列成员盘选择框中可以看到它的存在,如果不将其解释为镜象,它将无法出现在该对话框中。关于使用Winhex恢复RAID数据,我们将在后面的章节中专门介绍。
图4.90
4.3.22 调整选块选取位置
在Winhex中可以在不改变选块的选取范围大小的情况下对选块的选取位置进行调整,菜单项为Position→Move Block。
举例说明,如图4.91所示,我们现在选取的选块为0x10~0x2F,要将选取的范围调整为0x30~0x4F,也就是将选块的选取范围向向下移动0x20个字节,可以点击菜单项Position→Move Block,如图4.92所示。
图4.91
图4.92
随后会弹出图4.93所示的设置对话框,其中:
Distance:调整的距离,单位为字节数,单位根据Winhex的偏移坐标不同而不同,如果Winhex正在使用的坐标值是十六进制,则该窗口使用十六进制;如果Winhex正在使用的坐标值是十进制,则该窗口使用十进制。我们现在使用的坐标是十六进制,所以在窗口中输入十六进制值“20”。
Direction:方向,有forward(前进、向下)和backward(后退、向上)两个选项。在此我们要向下移动0x20个字节,所以选择forward。
图4.93
设置好后点击OK,选块的选取范围即被调整为0x30~0x4F,如图4.94所示。
图4.94
4.3.23 转到…
Winhex提供了快速跳转到某些特定位置的功能,它们的菜单项位Position→Go To菜单下,如图4.95所示。
图4.95
- Beginning Of File
跳转到文件开始处。打开着一个文件时用于跳转到该文件的偏移0字节处。
- End Of File
跳转到文件结尾处。打开着一个文件时用于跳转到该文件的最后一个字节处。
- Beginning Of Block
跳转到选块开始处。如果定义了选块,该功能用于跳转到该选块的第一个字节处。
- End Of Block
跳转到选块结尾处。如果定义了选块,该功能用于跳转到该选块的最后一个字节处。
- Beginning Of Page
跳转到页起始处。如果打开着一个文件,用于跳转到当前页的偏移0字节处。
- End Of Page
跳转到页结尾处。如果打开着一个文件,用于跳转到当前页的最后一个字节处。
- Beginning Of Ling
跳转到行起始处。用于跳转到光标当前所在行的行首,即第一个字节处。
- End Of Ling
跳转到行结尾处。用于跳转到光标当前所在行的行尾,即最后一个字节处。
4.3.24 标记位置
使用Winhex进行工作的过程中,我们可能需要对某个特定的位置进行标记,便于稍后能够很快地重新找到这个位置;如果标记的位置不再需要时,就需要取消对它的标记,这些功能可以通过菜单项Position→Mark Position和位于其下的Delete Marker进行,如图4.96所示。
图4.96
Mark Position用于对当前光标所在处的字节进行醒目标记,为了节省篇幅,对此功能不再配图显示。
Delete Marker用于取消标记,而位于其下的Go To Marker则用于直接跳转到处于标记状态的字节处。
4.3.25位置管理器
在实际工作中,我们可能需要使用Winhex在磁盘或文件中对某个特定的值进行搜索,我们可以在搜索时设置自动记录搜索到的目标位置,搜索完毕后程序会自动打开位置管理器,搜索到的目标在管理器中顺序排列,第一列为偏移值,第二列为搜索到的目标对象。
如图4.97所示,这是我们设定的搜索位于每个扇区结尾的可能存在的十六进制“55AA”的搜索结果。
图4.97
记录在Winhex位置管理器中的内容,即使在关闭Winhex程序后也不会消失。但如果再次使用Winhex时,位置管理器可能并不会自动打开,如果要使用位置管理器中保存的内容,可以通过单击菜单项Position→Position Manager打开它,如图4.98所示。
图4.98
4.3.26 分割文件
有时候,我们可能需要将一个文件分割成几个部分进行存放,比如保密需要、存储需要等。Winhex中的菜单项Tools→File Tools→Split提供了这项功能,即将一个文件按先后顺序、以设定的单元大小进行拆分,比如要将一个450MB的文件按每部分100MB分割,分被分割为四个100MB和一个50MB的文件单元,原理如图4.99所示。
图4.99
点击Tools→File Tools→Split菜单项后会弹出分割文件选择框,可以在选择框中选择要分割的文件并单击Split按钮,随即会弹出分割单元设置框,如图4.100所示。
图4.100
可以根据需要设置分割单元的大小,设置好后点击OK按钮,程序会再弹出一个文件保存对话框,需要在这个对话框中设置第一个分割单元的文件名和保存路径,设置好后即可开始进行分割。
当第一个单元保存完毕后,程序会暂停并再次弹出文件保存路径对话框,这次是要求设置第二个分割单元的文件名及保存路径,设置好后程序会继续进行,这个过程反复进行直到文件被分割完毕。
4.3.27 交叉拆分文件
交叉拆分文件与分割文件不同,分割文件是将一个文件按先后顺序进行分块,而交叉拆分文件则是将一个文件按要求以8位或16位为单元交替拆分成两个文件,比如要将“01 02 03 04 05 06 07 08 09 0A”进行拆分,拆分后的结果就是“01 03 05 07 09”和“02 04 06 08 0A”。
交叉拆分文件菜单项是Tools→File Tools→Dissect,如果按8Bit(1个字节)为拆分单元则选择Bytevise(8-Bit),若要按16Bit(2个字节)为拆分单元则选择Bytevise(16-Bit),如图4.101所示。
图4.101
在随后弹出的各个对应窗口中依次选择被拆分的文件、保存为的第一个文件名及路径、保存为的第二个文件名及路径即可开始拆分。
4.3.28 连接文件
连接文件与分割文件的过程相反,是将若干个文件首尾相接连接起来。
连接文件菜单项为Tools→File Tools→Concatenate,点击后首先弹出的是文件名设置及保存路径对话框,用于设置连接后生成的文件的文件名及存储位置。
设置好后点击“保存”按钮,随即弹出基础文件选择框,也就是要进行连接的第一个文件,如图4.102所示。
图4.102
选择好第一个文件后点击Append按钮,会再次弹出该对话框,用于选择第二个文件、也就是连接在第一个文件之后的下一个文件,选择好后点击Append…,该过程反复进行直到将所有要连接的文件选择完毕。
最后点击Done按钮,程序即开始连接所有文件。
4.3.29交叉合并文件
交叉合并文件是交叉拆分文件的反过程,它是按设定的单元大小(8Bit或16Bit)从两个文件中交叉提取字节后写入一个新的文件的过程。
交叉合并文件的菜单项是Tools→File Tools→Unify,如图4.103所示。
图4.103
点击菜单项后首先弹出的是要被合并的第一个文件的选择框,选择好后点击OK,程序会再次弹出文件选择框让用户选择用于合并的第二个文件,选择好后点击OK,会弹出合并后文件的文件名设置及保存路径对话框,用于设置合并后生成的文件的文件名及存储位置。
设置好后点击“保存”按钮,程序即开始合并文件。
4.3.30自动比较文件或磁盘
使用比较功能,可以根据需要寻找出两个比较对象间的不同之处或相同之处,在数据恢复分析过程中非常实用。
Winhex提供了对两个文件或磁盘进行比较以查找相同位置的不同点或相同点的功能,菜单项为Tools→File Tools→Compare,如图4.104所示。该功能不仅可以对两个磁盘进行比较、对两个文件进行比较,还可以进行磁盘与文件间的比较。
图4.104
点击菜单项后会弹出比较设置对话框,如图4.105所示。
图4.105
u 可以通过单击1st file或2nd file后的 按钮调出相应的第一比较对象及第二比较对象选择对话框。
u 在相应目标后的From offset框中可以分别输入开始比较的字节偏移位置。
u 单击Search differences前的 按钮,可以在“搜索不同点”和“搜索相同点”间进行循环转换,其后的Compare框中是需要比较的字节数,如果是对所有字节进行比较,通常可以不进行设置,单击OK后会自动填入相应值。
u 如果勾选了Discontinue comparison after,可以在框中设置一个字节数,根据搜索相同点或不同点的设置,相同字节数量或不同字节数量达到这个数值时即暂停比较,然后以文本方式给出相同点或不同点的字节位置及内容。如果不勾选此项,将会对两个对象进行完全比较后给出比较结果。
单击1st file后的 按钮,弹出第一比较对象选择对话框,如图4.106所示。
图4.106
u 如果第一对象为文件,可以单击Open File按钮,在弹出的Open File对话框中选择一个文件。
u 如果第一对象为磁盘,则单击Open Disk按钮,在弹出的Open Disk对话框中选择一个磁盘,可以是逻辑分区,也可以是一个物理磁盘。
选择好第一对象后,设置开始比较的字节位置,默认为偏移0字节处。
单击2nd file后的 按钮,调出第二比较对象选择对话框,与第一对象的选择方式相同。选择第二比较对象并设置好起始字节后,设置寻找相同点还是不同点及寻找的字节数量。在此,我们以在一个文件和一个磁盘间寻找第一个内容相同的字节为例,设置如图4.107所示。
确认设置无误后,单击OK按钮并对警告框进行确认后即开始比较。比较完成或达到寻找目的后,即会给出结果报告,如图4.108所示。
图4.107
图4.108
我们可以看到,文件1.IS0和磁盘2间的第一个内容相同的字节位置为偏移0x05处,内容都为“00”。
4.3.31同步比较文件或磁盘
与自动比较不同,Synchronize & Compare(同步比较)功能是对已经在Winhex中打开的界面内容进行直观的同步比较。例如,我们在界面中打开了文件1.ISO和磁盘2,选择View→Synchronize & Compare菜单命令即可实现对两个界面中的内容进行同步比较,如图4.109所示。
图4.109
同步比较分别以各界面显示的第一个字节偏移位置为比较基准点,然后将各界面中的其他字节按相对偏移进行对号入座。例如,在选择同步比较功能时,1.ISO当前界面显示的第一个字节偏移为0xB0,磁盘2显示的第一个字节偏移为0xD0,则将1.ISO的字节偏移0xB0与磁盘2的字节偏移0xD0作为比较基准点,也就是1.ISO字节偏移0xB0处的内容与磁盘2字节偏移0xD0处的内容进行对比,相应地1.ISO字节偏移0xB1处的内容则和磁盘2字节偏移0xD1处的内容进行对比,依此类推。内容不同的字节将会进行加黑处理,如图4.110所示。
图4.110
提示:同步比较的最大优点就是可以对各个比较对象进行界面“同步”,即当移动查看一个界面中的内容时,参与同步比较的其他界面内容也将同步移动,同时进行异同比较,从而可以非常方便、直观地查看对象间存在的相同之处与不同之处。
4.3.32 安全擦除文件
Winhex提供了对文件进行安全擦除的功能,用于对数据进行安全销毁,原理就是对销毁对象进行覆盖。
其菜单项是Tools→File Tools→Wipe Securely,如图4.111所示。
图4.111
点击菜单项后会弹出删除对象选择框,用于选择被安全擦除的文件,可以同时选择一个目录下的多个文件,如图4.112所示。
图4.112
选择好要安全擦除的文件后点击Delete按钮,程序会弹出擦除设置对话框,该对话框实际上就是前面介绍过的“填充选块”设置框,可以在其中选择使用什么十六进制值对销毁对象进行覆盖。
设置完成后即可开始对文件进行擦除。
4.3.33 进制转换器
数据恢复要经常与十六进制打交道,而我们正常生活中习惯使用十进制,就必然会有许多十六进制与十进制间的转换问题,Winhex就提供了这样一个进制转换器,它的菜单项是Tools→Hex Converter,如图4.113所示。
点击菜单项后会弹出十六进制与十进制转换器窗口,如图4.114所示。左边的输入框是十六进制输入框,右边的输入框是十进制输入框,在任何一个窗口中输入数值后按回车键,都会在另一个窗口中显示相应转换后的进制数值。
图4.113
图4.114
4.3.34 校验计算器
Winhex提供的功能不可谓不多,甚至包含一个功能强大的校验计算器,它的菜单项是Tools→Compute Hash,如图4.115所示。
图4.115
点击菜单项后即弹出校验计算器,计算器中包括了8位校验和、16位校验和、32位校验和、64位校验和、16位CRC校验等多种校验选项,如图4.116所示。
图4.116
要对磁盘或文件中的字节进行校验计算,可以将参加校验的部分选中为选块,然后调出校验计算器,设置要使用的校验方式后按OK键,即可得到校验结果。如图4.117所示,我们对一个文件的前32个字节进行8位校验和计算的结果是0x30。
图4.117
4.3.35选择字符集
不同的平台、不同的程序生成的数据可能会使用不同的字符集,不能正确地选择字符集会造成某些字体无法正常显示。例如,一个Word文档,选择使用Unicode字符集会在文本字符区显示可识别的汉字(图4.118),而使用其它字符集则会显示为不可识别的乱码(图4.119)。
图4.118
图4.119
字符集选择菜单项位于Options→Character Set下,可选项有ANSI ASCII、IBM ASCII、EBCDIC和Unicode,如图4.120所示。
图4.120
4.3.36 窗口管理
最后,我们来看一下Winhex窗口管理的几个菜单项,所有与窗口有关的菜单项都位于Window菜单下,如图4.121所示。
图4.121
在此我们只介绍几个重要的菜单项,其他各项由读者自行研究。
- Close All
关闭所有窗口。有时我们会同时打开着很多个目标磁盘或文件,如果在退出Winhex时不关闭所有窗口,再次打开Winhex时可能会自动重新打开这些窗口。而一个一个关闭这些窗口又太麻烦了,所以Winhex提供了这个Close All菜单项,用于一次关闭所有打开着的窗口。
- Tile Horizontally
水平平铺窗口。水平平铺窗口用于将各个打开着的目标磁盘或文件窗口水平平铺,效果如图4.122所示。
该功能可以用于同时查看多个窗口,尤其在阵列分析时非常方便。
图4.122
- Tile Vertically
垂直平铺窗口。垂直平铺窗口用于将各个打开着的目标磁盘或文件窗口垂直平铺,效果如图4.123所示。
与水平平铺相同,该功能可以用于同时查看多个窗口,尤其在阵列分析时非常方便。
图4.123