GDB Refactor [15/N]: Move stack.py to gdblib/stack.py (#1244)

pull/1245/head
Gulshan Singh 3 years ago committed by GitHub
parent 135ced5c9e
commit 2eccf02b50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -25,7 +25,6 @@ import pwndbg.heap
import pwndbg.lib.version import pwndbg.lib.version
import pwndbg.net import pwndbg.net
import pwndbg.proc import pwndbg.proc
import pwndbg.stack
import pwndbg.tls import pwndbg.tls
import pwndbg.ui import pwndbg.ui
import pwndbg.vmmap import pwndbg.vmmap

@ -11,8 +11,8 @@ import pwndbg.gdblib.info
import pwndbg.gdblib.memory import pwndbg.gdblib.memory
import pwndbg.gdblib.qemu import pwndbg.gdblib.qemu
import pwndbg.gdblib.regs import pwndbg.gdblib.regs
import pwndbg.gdblib.stack
import pwndbg.gdblib.typeinfo import pwndbg.gdblib.typeinfo
import pwndbg.stack
example_info_auxv_linux = """ example_info_auxv_linux = """
33 AT_SYSINFO_EHDR System-supplied DSO's ELF header 0x7ffff7ffa000 33 AT_SYSINFO_EHDR System-supplied DSO's ELF header 0x7ffff7ffa000
@ -257,7 +257,7 @@ def _get_execfn():
# 32e:1970| 0x7fffffffeff0 <-- 0x6f732e646c2f67 /* 'g/ld.so' */ # 32e:1970| 0x7fffffffeff0 <-- 0x6f732e646c2f67 /* 'g/ld.so' */
# 32f:1978| 0x7fffffffeff8 <-- 0 # 32f:1978| 0x7fffffffeff8 <-- 0
# 330:1980| 0x7ffffffff000 # 330:1980| 0x7ffffffff000
addr = pwndbg.stack.find_upper_stack_boundary(pwndbg.gdblib.regs.sp) addr = pwndbg.gdblib.stack.find_upper_stack_boundary(pwndbg.gdblib.regs.sp)
while pwndbg.gdblib.memory.byte(addr - 1) == 0: while pwndbg.gdblib.memory.byte(addr - 1) == 0:
addr -= 1 addr -= 1

@ -37,7 +37,7 @@ def canary():
stack_canaries = list( stack_canaries = list(
pwndbg.search.search( pwndbg.search.search(
pwndbg.gdblib.arch.pack(global_canary), mappings=pwndbg.stack.stacks.values() pwndbg.gdblib.arch.pack(global_canary), mappings=pwndbg.gdblib.stack.stacks.values()
) )
) )

@ -6,7 +6,7 @@ import pwndbg.config
import pwndbg.gdblib.arch import pwndbg.gdblib.arch
import pwndbg.gdblib.memory import pwndbg.gdblib.memory
import pwndbg.gdblib.regs import pwndbg.gdblib.regs
import pwndbg.stack import pwndbg.gdblib.stack
import pwndbg.vmmap import pwndbg.vmmap
import pwndbg.wrappers import pwndbg.wrappers
@ -49,7 +49,7 @@ def xinfo_stack(page, addr):
if canary_value is not None: if canary_value is not None:
all_canaries = list( all_canaries = list(
pwndbg.search.search( pwndbg.search.search(
pwndbg.gdblib.arch.pack(canary_value), mappings=pwndbg.stack.stacks.values() pwndbg.gdblib.arch.pack(canary_value), mappings=pwndbg.gdblib.stack.stacks.values()
) )
) )
follow_canaries = sorted(filter(lambda a: a > addr, all_canaries)) follow_canaries = sorted(filter(lambda a: a > addr, all_canaries))

@ -24,7 +24,6 @@ import pwndbg.gdblib.memory
import pwndbg.lib.elftypes import pwndbg.lib.elftypes
import pwndbg.lib.memoize import pwndbg.lib.memoize
import pwndbg.proc import pwndbg.proc
import pwndbg.stack
# ELF constants # ELF constants
PF_X, PF_W, PF_R = 1, 2, 4 PF_X, PF_W, PF_R = 1, 2, 4

@ -9,6 +9,7 @@ binaries do things to remap the stack (e.g. pwnies' postit).
import gdb import gdb
import pwndbg.elf import pwndbg.elf
import pwndbg.gdblib.abi
import pwndbg.gdblib.events import pwndbg.gdblib.events
import pwndbg.gdblib.memory import pwndbg.gdblib.memory
import pwndbg.lib.memoize import pwndbg.lib.memoize
@ -42,7 +43,7 @@ def find_upper_stack_boundary(stack_ptr, max_pages=1024):
# We can't get the stack size from stack layout and page fault on bare metal mode, # We can't get the stack size from stack layout and page fault on bare metal mode,
# so we return current page as a walkaround. # so we return current page as a walkaround.
if not pwndbg.gdblib.abi.linux: if not pwndbg.gdblib.abi.linux:
return stack_ptr + pwndbg.lib.memory.PAGE_SIZE return stack_ptr + pwndbg.gdblib.memory.PAGE_SIZE
return pwndbg.gdblib.memory.find_upper_boundary(stack_ptr, max_pages) return pwndbg.gdblib.memory.find_upper_boundary(stack_ptr, max_pages)

@ -24,9 +24,9 @@ import pwndbg.gdblib.events
import pwndbg.gdblib.memory import pwndbg.gdblib.memory
import pwndbg.gdblib.qemu import pwndbg.gdblib.qemu
import pwndbg.gdblib.remote import pwndbg.gdblib.remote
import pwndbg.gdblib.stack
import pwndbg.ida import pwndbg.ida
import pwndbg.lib.memoize import pwndbg.lib.memoize
import pwndbg.stack
import pwndbg.vmmap import pwndbg.vmmap
@ -163,7 +163,7 @@ def get(address, gdb_only=False):
return "" return ""
# Don't look up stack addresses # Don't look up stack addresses
if pwndbg.stack.find(address): if pwndbg.gdblib.stack.find(address):
return "" return ""
# This sucks, but there's not a GDB API for this. # This sucks, but there's not a GDB API for this.

@ -18,10 +18,10 @@ import pwndbg.gdblib.memory
import pwndbg.gdblib.qemu import pwndbg.gdblib.qemu
import pwndbg.gdblib.regs import pwndbg.gdblib.regs
import pwndbg.gdblib.remote import pwndbg.gdblib.remote
import pwndbg.gdblib.stack
import pwndbg.gdblib.typeinfo import pwndbg.gdblib.typeinfo
import pwndbg.lib.memoize import pwndbg.lib.memoize
import pwndbg.proc import pwndbg.proc
import pwndbg.stack
# List of manually-explored pages which were discovered # List of manually-explored pages which were discovered
# by analyzing the stack or register context. # by analyzing the stack or register context.
@ -95,7 +95,7 @@ def get():
return (pwndbg.lib.memory.Page(0, pwndbg.gdblib.arch.ptrmask, 7, 0, "[qemu]"),) return (pwndbg.lib.memory.Page(0, pwndbg.gdblib.arch.ptrmask, 7, 0, "[qemu]"),)
pages.extend(info_files()) pages.extend(info_files())
pages.extend(pwndbg.stack.stacks.values()) pages.extend(pwndbg.gdblib.stack.stacks.values())
pages.extend(explored_pages) pages.extend(explored_pages)
pages.extend(custom_pages) pages.extend(custom_pages)
@ -143,7 +143,7 @@ def explore(address_maybe):
return None return None
flags |= 2 if pwndbg.gdblib.memory.poke(address_maybe) else 0 flags |= 2 if pwndbg.gdblib.memory.poke(address_maybe) else 0
flags |= 1 if not pwndbg.stack.nx else 0 flags |= 1 if not pwndbg.gdblib.stack.nx else 0
page = find_boundaries(address_maybe) page = find_boundaries(address_maybe)
page.objfile = "<explored>" page.objfile = "<explored>"

@ -1,5 +1,5 @@
import pwndbg.gdblib.memory import pwndbg.gdblib.memory
import pwndbg.stack import pwndbg.gdblib.stack
import tests import tests
REFERENCE_BINARY = tests.binaries.get("reference-binary.out") REFERENCE_BINARY = tests.binaries.get("reference-binary.out")
@ -10,7 +10,7 @@ def test_memory_read_write(start_binary):
Tests simple pwndbg's memory read/write operations with different argument types Tests simple pwndbg's memory read/write operations with different argument types
""" """
start_binary(REFERENCE_BINARY) start_binary(REFERENCE_BINARY)
stack_addr = next(iter(pwndbg.stack.stacks.values())).vaddr stack_addr = next(iter(pwndbg.gdblib.stack.stacks.values())).vaddr
# Testing write(addr, str) # Testing write(addr, str)
val = "X" * 50 val = "X" * 50

Loading…
Cancel
Save