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

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

评论

存在调试器时,使用无效的句柄值调用CloseHandle()会触发0xc0000008。这不是致命的异常,而是一种常见的反调试技巧。您为什么认为Windows 8是负责任的?

在Windows 7下使用相同的调试器调试相同的应用程序不会引起任何问题。我认为这与操作系统有关。

#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 />

#3 楼

如果您对查看SEH感兴趣,请考虑出于这种目的使用pydbg SEH展开。