Merge branch 'dev'

pull/99/head
Zach Riggle 10 years ago
commit fdb19cb5da

@ -76,7 +76,7 @@ class DisassemblyAssistant(object):
instruction.condition = c instruction.condition = c
def condition(self, instruction): def condition(self, instruction):
return None return False
def enhance_next(self, instruction): def enhance_next(self, instruction):
""" """
@ -248,7 +248,7 @@ class DisassemblyAssistant(object):
for i, op in enumerate(ins.operands): for i, op in enumerate(ins.operands):
rv.append(' operands[%i] = %s' % (i, ops.get(op.type, op.type))) 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: if op.int is not None:
rv.append(' int = %#x' % (op.int)) rv.append(' int = %#x' % (op.int))

@ -42,7 +42,7 @@ class DisassemblyAssistant(pwndbg.disasm.arch.DisassemblyAssistant):
return None return None
if instruction.address != pwndbg.regs.pc: if instruction.address != pwndbg.regs.pc:
return None return False
cpsr = pwndbg.regs.cpsr cpsr = pwndbg.regs.cpsr

@ -64,6 +64,6 @@ def instruction(ins):
elif ins.condition: elif ins.condition:
asm = pwndbg.color.green(u'') + asm asm = pwndbg.color.green(u'') + asm
else: else:
asm = pwndbg.color.red(u'') + asm asm = ' ' + asm
return asm return asm

@ -132,7 +132,7 @@ class DisassemblyAssistant(pwndbg.disasm.arch.DisassemblyAssistant):
# We can't reason about anything except the current instruction # We can't reason about anything except the current instruction
if instruction.address != pwndbg.regs.pc: if instruction.address != pwndbg.regs.pc:
return None return False
efl = pwndbg.regs.eflags efl = pwndbg.regs.eflags

@ -13,9 +13,10 @@ import sys
import traceback import traceback
import gdb import gdb
import pwndbg.config
import pwndbg.stdio import pwndbg.stdio
debug = False debug = pwndbg.config.Parameter('debug-events', False, 'display internal event debugging info')
pause = 0 pause = 0
@ -39,15 +40,19 @@ class StartEvent(object):
if function in self.registered: if function in self.registered:
self.registered.remove(function) self.registered.remove(function)
def on_new_objfile(self): def on_new_objfile(self):
print("start.on_new_objfile")
if self.running or not gdb.selected_thread(): if self.running or not gdb.selected_thread():
print("already running, or not running")
return return
print("set running=true")
self.running = True self.running = True
for function in self.registered: for function in self.registered:
function() function()
def on_stop(self): def on_exited(self):
print("set running=false")
self.running = False self.running = False
gdb.events.start = StartEvent() gdb.events.start = StartEvent()
@ -142,12 +147,12 @@ gdb.events.new_objfile.connect(log_objfiles)
def after_reload(): def after_reload():
if gdb.selected_inferior().pid: if gdb.selected_inferior().pid:
for f in registered[gdb.events.stop]:
f()
for f in registered[gdb.events.start]: for f in registered[gdb.events.start]:
f() f()
for f in registered[gdb.events.new_objfile]: for f in registered[gdb.events.new_objfile]:
f() f()
for f in registered[gdb.events.stop]:
f()
def on_reload(): def on_reload():
for event, functions in registered.items(): for event, functions in registered.items():
@ -159,9 +164,9 @@ def on_reload():
def _start_newobjfile(): def _start_newobjfile():
gdb.events.start.on_new_objfile() gdb.events.start.on_new_objfile()
@stop @exit
def _start_stop(): def _start_stop():
gdb.events.start.on_stop() gdb.events.start.on_exited()
@exit @exit
def _reset_objfiles(): def _reset_objfiles():

Loading…
Cancel
Save