diff --git a/pwndbg/commands/context.py b/pwndbg/commands/context.py index c58ce5e32..d45d6b071 100644 --- a/pwndbg/commands/context.py +++ b/pwndbg/commands/context.py @@ -71,11 +71,14 @@ def regs(*regs): print('\n'.join(get_regs(*regs))) pwndbg.config.Parameter('show-flags', False, 'whether to show flags registers') +pwndbg.config.Parameter('show-retaddr-reg', False, 'whether to show return address register') def get_regs(*regs): result = [] - if not regs: + if not regs and pwndbg.config.show_retaddr_reg: + regs = pwndbg.regs.gpr + (pwndbg.regs.frame, pwndbg.regs.current.stack) + pwndbg.regs.retaddr + (pwndbg.regs.current.pc,) + elif not regs: regs = pwndbg.regs.gpr + (pwndbg.regs.frame, pwndbg.regs.current.stack, pwndbg.regs.current.pc) if pwndbg.config.show_flags: diff --git a/pwndbg/regs.py b/pwndbg/regs.py index da5a23ac7..9b2d731b5 100644 --- a/pwndbg/regs.py +++ b/pwndbg/regs.py @@ -91,7 +91,7 @@ class RegisterSet(object): if reg and reg not in self.common: self.common.append(reg) - self.all = set(i for i in misc) | set(flags) | set(self.common) + self.all = set(i for i in misc) | set(flags) | set(self.retaddr) | set(self.common) self.all -= {None} def __iter__(self): @@ -241,7 +241,6 @@ arch_to_regs = { 'arm': arm, 'aarch64': aarch64, 'powerpc': powerpc, - 'powerpc': powerpc, } @pwndbg.proc.OnlyWhenRunning @@ -426,3 +425,5 @@ sys.modules[__name__] = module(__name__, '') def update_last(): M = sys.modules[__name__] M.last = {k:M[k] for k in M.common} + if pwndbg.config.show_retaddr_reg: + M.last.update({k:M[k] for k in M.retaddr})