我正在写一个类似于犰狳的文件保护器。因此,我想实施某种“纳米材料”用于反倾销保护。
但是,我决定挂钩KiUserExceptionDispatcher
而不是打开我自己的流程。
问题是我不知道传递给KiUserExceptionDispatcher
的是什么,也不确定在我确定异常类型是STATUS_BREAKPOINT
例外之后如何继续。
我试过搜索Google,但无济于事。我找到的只是KiDispatchException
的结果,它挂在rootkit中。
有人能为我提供这个函数的typedef,并告诉我在确定它确实是STATUS_BREAKPOINT
异常之后我会做些什么来继续?在修改EIP上下文后,我会调用NtContinue
吗?
或者,如果我认为这不简单,我应该坚持犰狳风格吗?调试我自己的进程?
感谢。
答案 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