【问题标题】:Hooking KiUserExceptionDispatcher- can't find typedef anywhere?挂钩 KiUserExceptionDispatcher- 在任何地方都找不到 typedef?
【发布时间】:2014-01-07 21:36:41
【问题描述】:

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

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

问题是我不知道传递给 KiUserExceptionDispatcher 的内容,也不确定在确定异常类型为 STATUS_BREAKPOINT 异常后如何继续。

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

谁能给我这个函数的 typedef,并告诉我在确定它确实是 STATUS_BREAKPOINT 异常后我会怎么做?修改 EIP 上下文后我会调用NtContinue 吗?

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

谢谢。

【问题讨论】:

    标签: c++ winapi protector


    【解决方案1】:

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

    这作为基本原型的 sample 提供(来自Figure 14):

    KiUserExceptionDispatcher( PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext )
    

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

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

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

    【讨论】:

    • 在 Windows 7 x64 上,给 KiUserExceptionDispatcher 的异常代码存储在第一个参数中(第一个参数被压入堆栈;从 Ollydbg 的角度来看是第三个堆栈元素)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2018-06-20
    • 2016-08-05
    • 2023-03-16
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多