【问题标题】:Windbg pykd memory breakpointWindbg pykd 内存断点
【发布时间】:2017-05-11 08:03:14
【问题描述】:

我正在尝试通过在 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 发生时,

“嗨,MemBp!”被打印,WinDbg 中断目标进程

with "在任何异常处理之前报告第一次机会异常。 可能会出现此异常并进行处理。”

我希望知道为什么即使我给出 NoChange

也会崩溃

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

【问题讨论】:

  • 您能否发布您在 WinDbg 中使用的命令以激活您的 PyKd 脚本?
  • 我使用这个命令 >>.load pykd >>!py c:\ad.py 和 ad.py 是我的 python 脚本
  • 我发布的课程的目的是捕捉在内存中恢复数据的时刻。另外,在我的脚本中,我使用了这样的类“memBpHandler = MemBpHandler()”、“memBpHandler.setPageGuard(memBpHandler.pIatBase, memBpHandler.sizeIat)”

标签: windbg breakpoints pykd


【解决方案1】:

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

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

在 pykd 上,我无法处理 WinDbg 的进程,所以我禁用了它并且脚本可以正常工作!

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多