2017-05-11 60 views
0

我试图通过使用WinDbg的WinDBG的pykd记忆断点

一个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打破目标进程

与“第一次机会异常在任何异常处理之前报告 此异常可能会被预期和处理。

我希望知道为什么它打破即使我给NOCHANGE

以及如何修复脚本作品以及

+0

您可以发布您在WinDbg中使用的命令来激活您的PyKd脚本吗? –

+0

我使用这个命令 >>。load pykd >>!py c:\ ad.py and ad.py is my python script – Vanz

+0

我发布的类的目的是捕获恢复内存数据的时刻。另外,在我的脚本中,我使用了类“memBpHandler = MemBpHandler()”,“memBpHandler.setPageGuard(memBpHandler.pIatBase,memBpHandler.sizeIat)” – Vanz

回答