2

我正在编写一个类似于犰狳的文件保护器。所以,我想实施某种“纳米材料”来进行反倾销保护。

但是,我没有打开自己的进程,而是决定挂钩KiUserExceptionDispatcher.

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

我试过用谷歌搜索,但无济于事。我找到的只是 的结果KiDispatchException,它与 rootkit 挂钩。

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

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

谢谢。

4

1 回答 1

7

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

它提供了这个作为基本原型的示例(来自图 14):

KiUserExceptionDispatcher( PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext )

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

您是否有理由不能通过AddVectoredExceptionHandler添加额外的异常向量?

补充阅读:幕后:Windows XP 中的新向量异常处理

于 2014-01-07T23:15:18.447 回答