ntdll
函数不断抛出异常0xC0000008
并使我的调试器崩溃。我现在正在使用Windbg。但是,我无法查看
FS
(特别是FS:[0]
)。如何通过Windbg转储FS
?我尝试谷歌搜索无济于事。我对SEH特别感兴趣,但我能找到的只是倾销TEB或PEB。#1 楼
可以通过发出!exchain
命令在WinDbg中查看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]
#2 楼
如果要基于段选择器查找段的基地址,则可以使用dg
<selector>
;在这种情况下,您可以使用dg fs
: br />
评论
存在调试器时,使用无效的句柄值调用CloseHandle()会触发0xc0000008。这不是致命的异常,而是一种常见的反调试技巧。您为什么认为Windows 8是负责任的?在Windows 7下使用相同的调试器调试相同的应用程序不会引起任何问题。我认为这与操作系统有关。