parser=argparse.ArgumentParser(description="Display the SigreturnFrame at the specific address")
@ -40,92 +43,78 @@ def sigreturn(address: int = None, display_all=False):
)
SIGRETURN_FRAME_SIZE_x86_64=248
# Registers layout from pwntools: https://github.com/Gallopsled/pwntools/blob/e4d3c82501c03de44458ae498a830fe66594f66d/pwnlib/rop/srop.py#L256
SIGRETURN_FRAME_LAYOUT_x86_64={
"uc_flags":0,
"&uc":8,
"uc_stack.ss_sp":16,
"uc_stack.ss_flags":24,
"uc_stack.ss_size":32,
"r8":40,
"r9":48,
"r10":56,
"r11":64,
"r12":72,
"r13":80,
"r14":88,
"r15":96,
"rdi":104,
"rsi":112,
"rbp":120,
"rbx":128,
"rdx":136,
"rax":144,
"rcx":152,
"rsp":160,
"rip":168,
"eflags":176,
"csgsfs":184,
"err":192,
"trapno":200,
"oldmask":208,
"cr2":216,
"&fpstate":224,
"__reserved":232,
"sigmask":240,
}
SIGRETURN_REGISTERS_x86_64=[
"r8",
"r9",
"r10",
"r11",
"r12",
"r13",
"r14",
"r15",
"rdi",
"rsi",
"rbp",
"rbx",
"rdx",
"rax",
"rcx",
"rsp",
"rip",
]
SIGRETURN_FRAME_SIZE_x86_64=256
# Original registers layout from pwntools, modified below : https://github.com/Gallopsled/pwntools/blob/e4d3c82501c03de44458ae498a830fe66594f66d/pwnlib/rop/srop.py#L256
# Offsets and names from "CONFIG_X86_64 struct rt_sigframe, Linux Kernel /arch/x86/include/asm/sigframe.h