def invoke_server(signum, frame): """This function sets up a signal handler, which when it traps a signal, starts a debugging server suitable for other debugging clients to connect to. """ p = Gdb() p._sys_argv = list(sys.argv) from remote import RemoteWrapperServer p = RemoteWrapperServer(p) p.do_pydbserver(server_addr) p.set_trace(frame) import signal signal.signal(signum, old_handler)
import sys import struct from gdb import Gdb from ptrace.debugger import PtraceDebugger, ProcessSignal, ProcessExit pid = sys.argv[1] gdb = Gdb() gdb.debugger = PtraceDebugger() gdb.process = None gdb.attachProcess(pid) print("[!] attached to {0}".format(pid)) #gdb.breakpoint("0x80487e0") gdb.breakpoint("0x080487d6") gdb.breakpoint("0x08048802") while (True): try: gdb.cont() eip = gdb.process.getreg("eip") print("EIP: {0}".format(hex(eip))) #if eip == 0x80487e0: # print("pipe descriptor: {0}".format(hex(gdb.process.getreg("eax")))) # WRITE WHERE if eip == 0x80487d6: eax = gdb.process.getreg("eax") i = gdb.process.readBytes(eax, 4)
def __init__(self, vim): self.vim = vim self.gdb = Gdb(vim)
handler = logging.FileHandler('/tmp/dbug.log', 'w') handler.formatter = logging.Formatter( '%(msecs)6d %(levelname)-5s %(message)s') logger = logging.getLogger(__name__) logger.addHandler(handler) logger.setLevel(logging.DEBUG) bpdb = BreakpointDB() from gdb import Gdb try: logger.info("\n\n\n\n\n") if len(sys.argv) == 1: gdb = Gdb() logger.info("GDB server started") elif len(sys.argv) == 2: gdb_path = sys.argv[1] gdb = Gdb(gdb_path=gdb_path) logger.info("GDB server started %s" % (gdb_path)) while True: msg = vim.recv_msg() if msg["name"] == "file": filepath = msg["path"] gdb.file_and_exec_symbols(filepath) elif msg["name"] == "remote":
def __init__(self, pid): self.process = Process(pid) self.gdb = Gdb(pid) self.io_read_bytes = 0 self.io_write_bytes = 0 self.about = (self.process.name, pid, datetime.now())