Add $base function (#2005)

pull/2006/head
Hubert Jasudowicz 2 years ago committed by GitHub
parent bb34a39a52
commit ab90df12b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -53,3 +53,16 @@ def rebase(addr: gdb.Value | int) -> int:
"""Return rebased address."""
base = pwndbg.gdblib.elf.exe().address
return base + int(addr)
@GdbFunction(only_when_running=True)
def base(name_pattern: gdb.Value | str) -> int:
if isinstance(name_pattern, gdb.Value):
name = name_pattern.string()
else:
name = name_pattern
for p in pwndbg.gdblib.vmmap.get():
if name in p.objfile:
return p.vaddr
raise ValueError(f"No mapping named {name}")

@ -0,0 +1,15 @@
from __future__ import annotations
import gdb
import tests
REFERENCE_BINARY = tests.binaries.get("reference-binary.out")
def test_function_base(start_binary):
start_binary(REFERENCE_BINARY)
result = gdb.execute('p/x $base("reference-binary")', to_string=True).strip()
assert result.startswith("$1 = 0x") and result.endswith("000")

@ -9,7 +9,7 @@ from .utils import run_gdb_with_script
HELLO = [
"pwndbg: loaded ### pwndbg commands and ### shell commands. Type pwndbg [--shell | --all] [filter] for a list.",
"pwndbg: created $rebase, $ida GDB functions (can be used with print/break)",
"pwndbg: created $rebase, $base, $ida GDB functions (can be used with print/break)",
]
BINARY = tests.binaries.get("div_zero.out")

Loading…
Cancel
Save