windbg寄存器指令——rM


windbg中直接输入r是转储常用的寄存器的值:
kd> r
eax=00000001 ebx=ffdff980 ecx=8054bd4c edx=000002f8 esi=00000000 edi=1aa78a2c
eip=80528bdc esp=8054abd0 ebp=8054abe0 iopl=0         nv up ei pl nz na po nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00000202

rM num则是根据num的值转储指定的寄存器值,num是8位掩码值。
kd> rM 1
eax=00000001 ebx=ffdff980 ecx=8054bd4c edx=000002f8 esi=00000000 edi=1aa78a2c
eip=80528bdc esp=8054abd0 ebp=8054abe0 iopl=0         nv up ei pl nz na po nc

可以看到1转储的寄存器和r指令差不多,只是减少了段寄存器和efl标志寄存器,而rM 2也是一样的结果

kd> rM 4
fpcw=A0F0: rn 24 pu----  fpsw=0001: top=0 cc=0000 -------i  fptw=51DD
fopcode=0000  fpip=0000:81f4cf10  fpdp=8178:8054a8e4
st0= 8.642333363938739302340e+3749  st1= 9.639419256418530183140e-4710
st2= 3.415892994677046073280e-4932  st3=-8.264245565552034673930e+4339
st4= 1.403192073634315317380e+0070  st5=-4.280908993404124315760e-4907
st6=-3.182816659810306039710e-0937  st7=-5.981158449790342486480e+4339
这些寄存器都是浮点寄存器

kd> rM 8
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=0000
8则转储段寄存器和efl标志寄存器

kd> rM 10
mm0=81c5f02000000000  mm1=7ee8000000008213
mm2=820c404000000000  mm3=edae81f4ced80000
mm4=821e437400000177  mm5=a884821e4370821e
mm6=821e4374f8506871  mm7=56028054a89c822d
转储8个64位寄存器

kd> rM 20
dr0=00000000 dr1=00000000 dr2=00000000
dr3=00000000 dr6=ffff0ff0 dr7=00000400 cr4=000006f9
转储调试寄存器,dr0-3是四个硬件断点寄存器,dr6和dr7是断点状态和断点控制寄存器,而cr4则是Pentium处理器新增的控制寄存器

kd> rM 40
xmm0=-7.77525e-039 -8.59878e-038 0 0
xmm1=-1.16264e-037 -8.59844e-038 -7.72756e-039 -7.77504e-039
xmm2=5.6295e+014 -7.72759e-039 5.40901e-043 9.18453e-041
xmm3=-0.00167122 -1.00283e-038 -7.77525e-039 5.40901e-043
xmm4=-7.77512e-039 1.16264e-037 0 5.15678e-043
xmm5=-7.81319e-038 -1.16264e-037 -1.16264e-037 -1.68985e+034
xmm6=-1.54628e+024 3.2958e-025 0 0
xmm7=-3.07599e+038 -7.35214e-039 0 2.84707e-024
这是用于浮点计算的寄存器

kd> rM 80
cr0=8001003b cr2=74690fbd cr3=00343000
目前intel处理器使用到的三个控制寄存器,cr1处于保留状态

kd> rM 16
eax=00000001 ebx=ffdff980 ecx=8054bd4c edx=000002f8 esi=00000000 edi=1aa78a2c
eip=80528bdc esp=8054abd0 ebp=8054abe0 iopl=0         nv up ei pl nz na po nc
fpcw=A0F0: rn 24 pu----  fpsw=0001: top=0 cc=0000 -------i  fptw=51DD
fopcode=0000  fpip=0000:81f4cf10  fpdp=8178:8054a8e4
st0= 8.642333363938739302340e+3749  st1= 9.639419256418530183140e-4710
st2= 3.415892994677046073280e-4932  st3=-8.264245565552034673930e+4339
st4= 1.403192073634315317380e+0070  st5=-4.280908993404124315760e-4907
st6=-3.182816659810306039710e-0937  st7=-5.981158449790342486480e+4339
mm0=81c5f02000000000  mm1=7ee8000000008213
mm2=820c404000000000  mm3=edae81f4ced80000
mm4=821e437400000177  mm5=a884821e4370821e
mm6=821e4374f8506871  mm7=56028054a89c822d
而以上的掩码可以相加以输出多种类型的寄存器值,比如上面的16相当于输出rM 10+rM 2+rM 4的值。
寄存器代表的含义参考如下链接:
http://www.tyut.edu.cn/kecheng1/2008/site04/chapter/C2.htm
http://msdn.microsoft.com/zh-cn/library/9z1stfyw.aspx
以上数据是在windows xp sp3未安装补丁的版本中的输出。
欢迎转载本文章,请注明出处。


你可能感兴趣的:(内核,rootkit,底层)