我正在编写一个类似于犰狳的文件保护器。 所以,我想实施某种"纳米虫"来防止倾倒。
但是,我没有打开自己的流程,而是决定挂钩KiUserExceptionDispatcher
。
问题是我不知道传递给KiUserExceptionDispatcher
的内容,也不确定在确定异常类型是STATUS_BREAKPOINT
异常后如何继续。
我试过搜索谷歌,但无济于事。 我找到的只是 KiDispatchException
的结果,它被钩在 rootkit 中。
有人可以给我提供这个函数的 typedef,并告诉我在确定它确实是一个STATUS_BREAKPOINT
例外后我会怎么做才能继续?修改弹性公网IP上下文后会调用NtContinue
吗?
或者如果这不像我想的那么简单,我应该坚持犰狳风格吗?调试我自己的进程?
谢谢。
最接近文档的是这篇 MSJ 文章:关于 Win32 结构化异常处理深度的速成课程
它提供了这个作为基本原型的示例(来自图 14):
KiUserExceptionDispatcher( PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext )
在实践中,我还看到了PEXCEPTION_RECORD位于第三个参数而不是第一个参数中的实例(至少从 WinDbg 的角度来看)。x86 和 x64 实现之间也存在潜在差异。
是否有理由不能通过 AddVectoredExceptionHandler 添加额外的异常向量?
延伸阅读:幕后:Windows XP 中的新向量异常处理