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.net
import pwndbg.proc
import pwndbg.stack
import pwndbg.tls
import pwndbg.ui
import pwndbg.vmmap

@ -11,8 +11,8 @@ import pwndbg.gdblib.info
import pwndbg.gdblib.memory
import pwndbg.gdblib.qemu
import pwndbg.gdblib.regs
import pwndbg.gdblib.stack
import pwndbg.gdblib.typeinfo
import pwndbg.stack
example_info_auxv_linux = """
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' */
# 32f:1978| 0x7fffffffeff8 <-- 0
# 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:
addr -= 1

@ -37,7 +37,7 @@ def canary():
stack_canaries = list(
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.memory
import pwndbg.gdblib.regs
import pwndbg.stack
import pwndbg.gdblib.stack
import pwndbg.vmmap
import pwndbg.wrappers
@ -49,7 +49,7 @@ def xinfo_stack(page, addr):
if canary_value is not None:
all_canaries = list(
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))

@ -24,7 +24,6 @@ import pwndbg.gdblib.memory
import pwndbg.lib.elftypes
import pwndbg.lib.memoize
import pwndbg.proc
import pwndbg.stack
# ELF constants
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 pwndbg.elf
import pwndbg.gdblib.abi
import pwndbg.gdblib.events
import pwndbg.gdblib.memory
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,
# so we return current page as a walkaround.
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)

@ -24,9 +24,9 @@ import pwndbg.gdblib.events
import pwndbg.gdblib.memory
import pwndbg.gdblib.qemu
import pwndbg.gdblib.remote
import pwndbg.gdblib.stack
import pwndbg.ida
import pwndbg.lib.memoize
import pwndbg.stack
import pwndbg.vmmap
@ -163,7 +163,7 @@ def get(address, gdb_only=False):
return ""
# Don't look up stack addresses
if pwndbg.stack.find(address):
if pwndbg.gdblib.stack.find(address):
return ""
# 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.regs
import pwndbg.gdblib.remote
import pwndbg.gdblib.stack
import pwndbg.gdblib.typeinfo
import pwndbg.lib.memoize
import pwndbg.proc
import pwndbg.stack
# List of manually-explored pages which were discovered
# 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]"),)
pages.extend(info_files())
pages.extend(pwndbg.stack.stacks.values())
pages.extend(pwndbg.gdblib.stack.stacks.values())
pages.extend(explored_pages)
pages.extend(custom_pages)
@ -143,7 +143,7 @@ def explore(address_maybe):
return None
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.objfile = "<explored>"

@ -1,5 +1,5 @@
import pwndbg.gdblib.memory
import pwndbg.stack
import pwndbg.gdblib.stack
import tests
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
"""
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)
val = "X" * 50

Loading…
Cancel
Save