挂钩KiUserExceptionDispatcher-无法在任何地方找到typedef?

时间:2014-01-07 21:36:42

标签: c++ winapi protector

我正在写一个类似于犰狳的文件保护器。因此,我想实施某种“纳米材料”用于反倾销保护。

但是,我决定挂钩KiUserExceptionDispatcher而不是打开我自己的流程。

问题是我不知道传递给KiUserExceptionDispatcher的是什么,也不确定在我确定异常类型是STATUS_BREAKPOINT例外之后如何继续。

我试过搜索Google,但无济于事。我找到的只是KiDispatchException的结果,它挂在rootkit中。

有人能为我提供这个函数的typedef,并告诉我在确定它确实是STATUS_BREAKPOINT异常之后我会做些什么来继续?在修改EIP上下文后,我会调用NtContinue吗?

或者,如果我认为这不简单,我应该坚持犰狳风格吗?调试我自己的进程?

感谢。

1 个答案:

答案 0 :(得分:5)

最接近文档的是这篇MSJ文章: A Crash Course on the Depths of Win32 Structured Exception Handling

这为基本原型提供了示例(来自Figure 14):

KiUserExceptionDispatcher( PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext )

在实践中,我也看到过PEXCEPTION_RECORD位于第3个参数而不是第一个参数的情况(至少从WinDbg的角度来看)。 x86和x64实现之间也存在潜在的差异。

是否有理由无法通过AddVectoredExceptionHandler添加其他异常向量?

补充阅读:Under the Hood: New Vectored Exception Handling in Windows XP