Windbg pykd内存断点

时间:2017-05-11 08:03:15

标签: windbg breakpoints pykd

我试图通过在windbg上使用pykd来创建具有内存断点功能的自动化脚本

这是我的简短脚本

class MemBpHandler(pykd.eventHandler):
    def setPageGuard(self, addr, size, guard=0x140): # Set PAGE_GUARD
        cmdVprotect = "!sdbgext.vprotect %x %x %x"
        cmdr = pykd.dbgCommand(cmdVprotect % (addr, size, guard))
        dbiprintf(cmdr)

    def onException(self, exceptInfo):
        dbiprintf("[!] Exception occured")
        if exceptInfo.exceptionCode == 0x80000001: # GUARD_PAGE_VIOLATION # Memory breakpoint
            dbiprintf("Hi MemBp!")

            # ...some procedures...

            return pykd.eventResult.NoChange # <=== NoChange but WinDbg breaks
        return pykd.eventResult.NoChange

发生GUARD_PAGE_VIOLATION时,

&#34;嗨MemBp!&#34;打印并且WinDbg打破了目标进程

with&#34;在任何异常处理之前报告第一次机会异常。 可以预期和处理此异常。&#34;

我希望知道为什么它会打破我的 NoChange

以及如何修复脚本以便正常运行

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。这只是一个异常过滤问题。

WinDBG - how to set all exception to be passed into app?

在pykd上,我无法处理WinDbg的进程,所以我禁用它并且脚本有效!

谢谢