似乎 Windows 8 破坏了 Ollydbg,因为几个ntdll
函数不断抛出异常0xC0000008
并使我的调试器崩溃。
我现在正在使用 Windbg。但是,我无法查看FS
(特别是FS:[0]
)。我怎样才能得到一个FS
通过 Windbg的转储?我试过谷歌搜索无济于事。我对 SEH 特别感兴趣,但我能找到的只是倾销 TEB 或 PEB。
似乎 Windows 8 破坏了 Ollydbg,因为几个ntdll
函数不断抛出异常0xC0000008
并使我的调试器崩溃。
我现在正在使用 Windbg。但是,我无法查看FS
(特别是FS:[0]
)。我怎样才能得到一个FS
通过 Windbg的转储?我试过谷歌搜索无济于事。我对 SEH 特别感兴趣,但我能找到的只是倾销 TEB 或 PEB。
如果您想根据其选择器查找段的基地址,您可以使用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
您可以在上面看到Base
offs
是7ffdf000
,所以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 展开用于此类目的。