From 2393ccc15589feb42b9faaeeb8da16d952759c49 Mon Sep 17 00:00:00 2001 From: OB Date: Wed, 22 Nov 2023 18:57:34 -0800 Subject: [PATCH] add arm as well --- pwndbg/commands/sigreturn.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pwndbg/commands/sigreturn.py b/pwndbg/commands/sigreturn.py index 86052eb0b..ac5d0aa65 100644 --- a/pwndbg/commands/sigreturn.py +++ b/pwndbg/commands/sigreturn.py @@ -21,12 +21,15 @@ SIGRETURN_FRAME_LAYOUTS: dict[str,list[Tuple[int, str]]] = { "x86-64":[(-8, "&pretcode")] + list(pwnlib.rop.srop.registers["amd64"].items()), "i386":list(pwnlib.rop.srop.registers["i386"].items()), "aarch64":list(pwnlib.rop.srop.registers["aarch64"].items()), + "arm":list(pwnlib.rop.srop.registers["arm"].items()), } +# Always print these registers (as well as flag register, eflags / cpsr) SIGRETURN_CORE_REGISTER: dict[str, set[str]] = { "x86-64":{ *amd64.gpr, amd64.frame, amd64.stack, amd64.pc }, "i386": { *i386.gpr,i386.frame, i386.stack, i386.pc }, "aarch64": { *aarch64.gpr, "sp", "pc"}, + "arm": { *arm.gpr, "fp" "ip", "sp", "lr", "pc" }, } @@ -57,7 +60,7 @@ parser.add_argument( @pwndbg.commands.ArgparsedCommand(parser) @pwndbg.commands.OnlyWhenRunning -@pwndbg.commands.OnlyWithArch(["x86-64", "i386", "aarch64"]) +@pwndbg.commands.OnlyWithArch(["x86-64", "i386", "aarch64", "arm"]) def sigreturn(address: int = None, display_all=False, print_address=False): address = pwndbg.gdblib.regs.sp if address is None else address @@ -86,8 +89,8 @@ def sigreturn(address: int = None, display_all=False, print_address=False): print_value(f"{regname} {desc}", address + stack_offset, print_address) - elif reg == "eflags": - reg_flags = pwndbg.gdblib.regs.flags["eflags"] + elif reg in pwndbg.gdblib.regs.flags: # eflags or cpsr + reg_flags = pwndbg.gdblib.regs.flags[reg] desc = C.format_flags(value, reg_flags) print_value(f"{regname} {desc}", address + stack_offset, print_address)