class Main: def __init__(self): self.dbg = pydbg() self.viewer = HitboxViewer(self) self.renderer = Renderer(self) def runSynchronous(self): def renderFrame(dbg): self.renderer.renderFrame() return DBG_CONTINUE def startingHandler(dbg): dbg.bp_set(FRAME_BP, handler=renderFrame) return DBG_CONTINUE self.viewer.findGame() self.renderer.makeWindow() self.renderer.initDirect3D() self.dbg.attach(self.viewer.kof_pid) self.dbg.bp_set(START_BP, restore=False, handler=startingHandler) self.dbg.run() def runAsynchronous(self): self.viewer.findGame() self.renderer.makeWindow() self.renderer.initDirect3D() #self.renderer.pumpMessages() self.renderer.runAsynchronous() def release(self): def releaseDebugger(): # remove all set breakpoints/watchpoints #self.dbg.bp_del_all() # why doesn't this work? self.dbg.bp_del_hw_all() self.dbg.bp_del_mem_all() print "Cleaned up pydbg instance" print "Releasing Main..." releaseDebugger() elements = ( self.viewer, self.renderer, ) for element in elements: if element is not None: element.release() print "Released Main"
def __init__(self): self.dbg = pydbg() self.viewer = HitboxViewer(self) self.renderer = Renderer(self)