From afbe6f0c6f2b83b3f54d519c128f3c378b32772e Mon Sep 17 00:00:00 2001 From: lebr0nli <61896187+lebr0nli@users.noreply.github.com> Date: Fri, 15 Jul 2022 10:10:15 +0800 Subject: [PATCH] Try fs/gs_base registers before ptrace'ing --- pwndbg/regs.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pwndbg/regs.py b/pwndbg/regs.py index cf72ff3f7..44a3d91f4 100644 --- a/pwndbg/regs.py +++ b/pwndbg/regs.py @@ -389,12 +389,24 @@ class module(ModuleType): @property @pwndbg.memoize.reset_on_stop def fsbase(self): - return self._fs_gs_helper(ARCH_GET_FS) + try: + # We can try fs_base register in GDB >= 8. + assert get_register == gdb79_get_register + fs_base = get_register("fs_base") + return fs_base + except (ValueError, AssertionError): + return self._fs_gs_helper(ARCH_GET_FS) @property @pwndbg.memoize.reset_on_stop def gsbase(self): - return self._fs_gs_helper(ARCH_GET_GS) + try: + # We can try gs_base register in GDB >= 8. + assert get_register == gdb79_get_register + gs_base = get_register("gs_base") + return gs_base + except (ValueError, AssertionError): + return self._fs_gs_helper(ARCH_GET_GS) @pwndbg.memoize.reset_on_stop def _fs_gs_helper(self, which):