2017-05-11 99 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

回答