Windbg:使用 "dt" 命令时指定伪寄存器有什么好处
Windbg: what is the benefit of specifying pseudo register when using "dt" command
在 Windbg 中使用“显示类型”命令时,您可以选择指定伪寄存器。这将添加基地址。但是我不清楚指定伪寄存器有什么好处。
添加“@$teb”伪寄存器时:
dt ntdll!_TEB @$teb ThreadLocalStoragePointer
+0x02c ThreatLocalStoragePointer : (null)
不添加“@$teb”伪寄存器:
dt ntdll!_TEB ThreadLocalStoragePointer
+0x02c ThreatLocalStoragePointer : Ptr32 Void
如果您指定一个伪寄存器,它将被评估为一个地址
输出将显示评估结果
这就像指定一个地址 dt ntdll!_teb 12345678`9abcdef0
如果您不提供可评估的表达式,dt 将简单地打印结构
例子
0:001> dt ntdll!_TEB ProcessEnvironmentBlock->ProcessParameters->CommandLine @$teb
+0x060 ProcessEnvironmentBlock :
+0x020 ProcessParameters :
+0x070 CommandLine : _UNICODE_STRING "dbstk.exe"
0:001> dt ntdll!_TEB ProcessEnvironmentBlock->ProcessParameters->CommandLine
+0x060 ProcessEnvironmentBlock :
+0x020 ProcessParameters :
+0x070 CommandLine : _UNICODE_STRING
0:001>
处理评论
是的,就像铸造 (TEB *) 0x12345678`9abcdef
您还可以在所有内置伪寄存器上使用如下所示的 C++ 表达式求值器或使用地址
0:001> ?? @$teb->ProcessEnvironmentBlock->ProcessParameters->CommandLine
struct _UNICODE_STRING
"dbstk.exe"
+0x000 Length : 0x12
+0x002 MaximumLength : 0x14
+0x008 Buffer : 0x000002a6`27290fb0 "dbstk.exe"
0:001> ? @$teb
Evaluate expression: 1080494329856 = 000000fb`927b1000
0:001> dt ntdll!_TEB ProcessEnvironmentBlock->ProcessParameters->CommandLine 000000fb`927b1000
+0x060 ProcessEnvironmentBlock :
+0x020 ProcessParameters :
+0x070 CommandLine : _UNICODE_STRING "dbstk.exe"
0:001>
在 Windbg 中使用“显示类型”命令时,您可以选择指定伪寄存器。这将添加基地址。但是我不清楚指定伪寄存器有什么好处。
添加“@$teb”伪寄存器时:
dt ntdll!_TEB @$teb ThreadLocalStoragePointer
+0x02c ThreatLocalStoragePointer : (null)
不添加“@$teb”伪寄存器:
dt ntdll!_TEB ThreadLocalStoragePointer
+0x02c ThreatLocalStoragePointer : Ptr32 Void
如果您指定一个伪寄存器,它将被评估为一个地址 输出将显示评估结果
这就像指定一个地址 dt ntdll!_teb 12345678`9abcdef0
如果您不提供可评估的表达式,dt 将简单地打印结构
例子
0:001> dt ntdll!_TEB ProcessEnvironmentBlock->ProcessParameters->CommandLine @$teb
+0x060 ProcessEnvironmentBlock :
+0x020 ProcessParameters :
+0x070 CommandLine : _UNICODE_STRING "dbstk.exe"
0:001> dt ntdll!_TEB ProcessEnvironmentBlock->ProcessParameters->CommandLine
+0x060 ProcessEnvironmentBlock :
+0x020 ProcessParameters :
+0x070 CommandLine : _UNICODE_STRING
0:001>
处理评论
是的,就像铸造 (TEB *) 0x12345678`9abcdef
您还可以在所有内置伪寄存器上使用如下所示的 C++ 表达式求值器或使用地址
0:001> ?? @$teb->ProcessEnvironmentBlock->ProcessParameters->CommandLine
struct _UNICODE_STRING
"dbstk.exe"
+0x000 Length : 0x12
+0x002 MaximumLength : 0x14
+0x008 Buffer : 0x000002a6`27290fb0 "dbstk.exe"
0:001> ? @$teb
Evaluate expression: 1080494329856 = 000000fb`927b1000
0:001> dt ntdll!_TEB ProcessEnvironmentBlock->ProcessParameters->CommandLine 000000fb`927b1000
+0x060 ProcessEnvironmentBlock :
+0x020 ProcessParameters :
+0x070 CommandLine : _UNICODE_STRING "dbstk.exe"
0:001>