我正在写一个类似于 Armadillo 的文件保护器。因此,我想实现某种“名词”来进行反倾销保护。
但是,我没有打开自己的进程,而是决定钩住KiUserExceptionDispatcher
。
问题是我不知道将什么传递给KiUserExceptionDispatcher
,也不确定在确定异常类型为STATUS_BREAKPOINT
异常之后如何继续。
我曾尝试搜索Google,但无济于事。我发现的只是KiDispatchException
的结果,它卡在rootkits中。
有人可以为我提供此函数的typedef,并告诉我确定确实是STATUS_BREAKPOINT
异常后我将继续执行什么操作?修改EIP上下文后,我会叫NtContinue
吗?
或者,如果这不是我想的那么简单,我应该坚持 Armadillo 风格吗?调试我自己的过程?
谢谢。
最佳答案
与文档最接近的东西是这篇MSJ文章:
A Crash Course on the Depths of Win32 Structured Exception Handling
它提供了此作为基本原型(prototype)的示例(来自Figure 14):
KiUserExceptionDispatcher( PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext )
在实践中,我还看到了PEXCEPTION_RECORD在第三个参数中而不是第一个参数的实例(至少从WinDbg的 Angular 来看)。 x86和x64实现之间也存在潜在差异。
您是否有理由无法通过AddVectoredExceptionHandler添加其他异常 vector ?
补充阅读:Under the Hood: New Vectored Exception Handling in Windows XP
关于c++ - Hook KiUserExceptionDispatcher-在任何地方都找不到typedef?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20982429/