内存命令
这一节里面,我们学习如何查看内存信息。内存是存储数据、代码的地方,通过内存查看命令可以分析很多问题。相关命令可以分为:内存查看命令和内存统计命令。内存统计命令用来分析内存的使用状况。
查看内存
有非常丰富的内存查看命令,它们被统一为d*格式,如下所示:
§ d[类型] [地址范围]
d代表Display,类型包括:字符、字符串、双字等。具体来说,d*命令共有这几种:d、 da、db、dc、dd、dD、df、dp、dq、du、dw、dW、dyb、dyd、ds、dS。解释如下:
内存类型
基本类型:
§ dw = 双字节WORD格式;
§ dd = 4字节DWORD格式 ;
§ dq = 8字节格式;
§ df = 4字节单精度浮点数格式;
§ dD =8字节双精度浮点数格式;
§ dp = 指针大小格式,32位系统下4字节,64位系统下为8字节。
基本字符串:
§ da = ASCII字符串格式;
§ du = UNICODE字符串格式;
§ db =字节 + ASCII字符串;
§ dW = 双字节WORD + ASCII字符串;
§ dc = 4字节DWORD + ASCII字符串。
高级字符串:
§ ds = ANSI_STRING类型字符串格式;
§ dS = UNICODE_STRING类型字符串格式。
二进制 + 基本类型:
§ byb = 二进制 + 字节;
§ byd = 二进制 + DWORD值
如果读者对此感觉不明白,特别是组合模式究竟是何种情形?看下例应能清楚。下例将同一个ASCII字符串,分别以ASCII字符串、Unicode字符串以及组合模式等共五种方式显示:
此系列命令还有一些可加利用的开关选项,介绍如下:
/c 列数:指定列数。默认情况下,列数 等于16除以列长,如dd命令的默认列数即为4列(=16/4)。例:
§ dd /c 8
此命令每列显示8个DWORD数,即32字节内容。
/p:此选项用来显示物理内存信息,只能用于内核模式中。不使用此命令时,都将显示虚拟内存信息。如:
§ d /p [地址范围]
L 长度: 默认情况下,d命令只显示固定长度的内存,一般为128或64字节。L可指定长度,如下面的命令将显示地址0×80000000开始处的0×100个字节内容:
§ db 0×80000000 L100