Exemple #1
0
class Main:
	def __init__(self):
		self.dbg = pydbg()
		self.config = Config()
		self.process = Process(self)
		self.gameState = GameState(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)
			dbg.bp_del(START_BP)
			return DBG_CONTINUE

		self.process.findGame()
		self.renderer.makeWindow()
		self.renderer.initDirect3D()
		self.dbg.attach(self.process.kof_pid)
		self.dbg.bp_set(START_BP, restore=False, handler=startingHandler)
		self.dbg.run()


	def runAsynchronous(self):
		self.process.findGame()
		self.renderer.makeWindow()
		self.renderer.initDirect3D()
		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.process,
			self.renderer,
		)
		for element in elements:
			if element is not None:
				element.release()
		
		print "Released Main"
Exemple #2
0
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"