如何使用windbg查看FS:[0]?

逆向工程 x86 风袋
2021-06-20 20:29:04

似乎 Windows 8 破坏了 Ollydbg,因为几个ntdll函数不断抛出异常0xC0000008并使我的调试器崩溃。

我现在正在使用 Windbg。但是,我无法查看FS(特别是FS:[0])。我怎样才能得到一个FS通过 Windbg的转储我试过谷歌搜索无济于事。我对 SEH 特别感兴趣,但我能找到的只是倾销 TEB 或 PEB。

3个回答

如果您想根据其选择器查找段的基地址,您可以使用dg<selector>; 在这种情况下,您将使用dg fs

0:000> dg fs
                                  P Si Gr Pr Lo
Sel    Base     Limit     Type    l ze an es ng Flags
---- -------- -------- ---------- - -- -- -- -- --------
003B 7ffdf000 00000fff Data RW Ac 3 Bg By P  Nl 000004f3

您可以在上面看到Baseoffs7ffdf000,所以FS:[0] == [7ffdf000]

0:000> db 7ffdf000
7ffdf000  1c f7 1d 00 00 00 1e 00-00 f0 1c 00 00 00 00 00  ................
7ffdf010  00 1e 00 00 00 00 00 00-00 f0 fd 7f 00 00 00 00  ................
7ffdf020  0c 13 00 00 bc 0f 00 00-00 00 00 00 2c f0 fd 7f  ............,...
7ffdf030  00 a0 fd 7f 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdf040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdf050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdf060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdf070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

在 WinDbg 中可以通过发出!exchain命令查看 SEH 链

0:000> !exchain    # display the SEH chain
0012ffb0: wireshark!_except_handler4+0 (00522555)
0012ffe0: kernel32!_except_handler3+0 (7c839ac0)
  CRT scope  0, filter: kernel32!BaseProcessStart+29 (7c843882)
                func:   kernel32!BaseProcessStart+3a (7c843898)
Invalid exception stack at ffffffff

FS:[0]是指向SEH 链起点的指针您可以遍历生成的输出!exchain以找到FS:[0]

如果您有兴趣查看 SEH,请考虑将pydbg SEH 展开用于此类目的。