diff --git a/pwndbg/disasm/arch.py b/pwndbg/disasm/arch.py index 44e350d60..015a8404e 100644 --- a/pwndbg/disasm/arch.py +++ b/pwndbg/disasm/arch.py @@ -76,7 +76,7 @@ class DisassemblyAssistant(object): instruction.condition = c def condition(self, instruction): - return None + return False def enhance_next(self, instruction): """ @@ -248,7 +248,7 @@ class DisassemblyAssistant(object): for i, op in enumerate(ins.operands): rv.append(' operands[%i] = %s' % (i, ops.get(op.type, op.type))) - #rv.append(' access = %s' % (access.get(op.access, op.access))) + rv.append(' access = %s' % (access.get(op.access, op.access))) if op.int is not None: rv.append(' int = %#x' % (op.int)) diff --git a/pwndbg/disasm/arm.py b/pwndbg/disasm/arm.py index 3df18ec12..46972267d 100644 --- a/pwndbg/disasm/arm.py +++ b/pwndbg/disasm/arm.py @@ -42,7 +42,7 @@ class DisassemblyAssistant(pwndbg.disasm.arch.DisassemblyAssistant): return None if instruction.address != pwndbg.regs.pc: - return None + return False cpsr = pwndbg.regs.cpsr diff --git a/pwndbg/disasm/color.py b/pwndbg/disasm/color.py index d514a833e..57448d2fd 100644 --- a/pwndbg/disasm/color.py +++ b/pwndbg/disasm/color.py @@ -64,6 +64,6 @@ def instruction(ins): elif ins.condition: asm = pwndbg.color.green(u'✔ ') + asm else: - asm = pwndbg.color.red(u'✘ ') + asm + asm = ' ' + asm return asm diff --git a/pwndbg/disasm/x86.py b/pwndbg/disasm/x86.py index 798093bfa..3bb491497 100644 --- a/pwndbg/disasm/x86.py +++ b/pwndbg/disasm/x86.py @@ -132,7 +132,7 @@ class DisassemblyAssistant(pwndbg.disasm.arch.DisassemblyAssistant): # We can't reason about anything except the current instruction if instruction.address != pwndbg.regs.pc: - return None + return False efl = pwndbg.regs.eflags diff --git a/pwndbg/events.py b/pwndbg/events.py index b349e45e9..4d8abb112 100644 --- a/pwndbg/events.py +++ b/pwndbg/events.py @@ -13,9 +13,10 @@ import sys import traceback import gdb +import pwndbg.config import pwndbg.stdio -debug = False +debug = pwndbg.config.Parameter('debug-events', False, 'display internal event debugging info') pause = 0 @@ -39,15 +40,19 @@ class StartEvent(object): if function in self.registered: self.registered.remove(function) def on_new_objfile(self): + print("start.on_new_objfile") if self.running or not gdb.selected_thread(): + print("already running, or not running") return + print("set running=true") self.running = True for function in self.registered: function() - def on_stop(self): + def on_exited(self): + print("set running=false") self.running = False gdb.events.start = StartEvent() @@ -142,12 +147,12 @@ gdb.events.new_objfile.connect(log_objfiles) def after_reload(): if gdb.selected_inferior().pid: + for f in registered[gdb.events.stop]: + f() for f in registered[gdb.events.start]: f() for f in registered[gdb.events.new_objfile]: f() - for f in registered[gdb.events.stop]: - f() def on_reload(): for event, functions in registered.items(): @@ -159,9 +164,9 @@ def on_reload(): def _start_newobjfile(): gdb.events.start.on_new_objfile() -@stop +@exit def _start_stop(): - gdb.events.start.on_stop() + gdb.events.start.on_exited() @exit def _reset_objfiles():