mirror of https://github.com/pwndbg/pwndbg.git
Add procinfo, permit passing arguments to start and entry
parent
0a1316d1f1
commit
df8006bbae
@ -0,0 +1,66 @@
|
||||
import gdb
|
||||
import os
|
||||
import pwndbg.proc
|
||||
import pwndbg.commands
|
||||
import pwndbg.auxv
|
||||
try:
|
||||
import psutil
|
||||
except:
|
||||
psutil = None
|
||||
|
||||
"""
|
||||
PEDA prints it out like this:
|
||||
|
||||
exe = /bin/bash
|
||||
fd[0] -> /dev/pts/96
|
||||
fd[1] -> /dev/pts/96
|
||||
fd[2] -> /dev/pts/96
|
||||
pid = 31102
|
||||
ppid = 31096
|
||||
uid = [287138, 287138, 287138, 287138]
|
||||
gid = [5000, 5000, 5000, 5000]
|
||||
|
||||
"""
|
||||
|
||||
@pwndbg.commands.Command
|
||||
def procinfo():
|
||||
"""
|
||||
Display information about the running process.
|
||||
"""
|
||||
if not psutil:
|
||||
print "psutil required but not installed"
|
||||
return
|
||||
|
||||
exe = repr(str(pwndbg.auxv.get()['AT_EXECFN']))
|
||||
|
||||
proc = psutil.Process(pwndbg.proc.pid)
|
||||
|
||||
pid = proc.pid
|
||||
ppid = proc.ppid()
|
||||
|
||||
uids = proc.uids()
|
||||
uids = [uids.real, uids.effective, uids.saved]
|
||||
|
||||
gids = proc.gids()
|
||||
gids = [gids.real, gids.effective, gids.saved]
|
||||
|
||||
files = {f.fd:repr(str(f.path)) for f in proc.open_files()}
|
||||
|
||||
for c in proc.connections():
|
||||
files[c.fd] = '%s:%s => %s:%s' % (c.laddr + c.raddr)
|
||||
|
||||
for fd in os.listdir("/proc/%d/fd" % pid):
|
||||
fd = int(fd)
|
||||
if fd in files:
|
||||
continue
|
||||
files[fd] = repr(str(os.path.realpath("/proc/%d/fd/%s" % (pid, fd))))
|
||||
|
||||
print("%-10s %s" % ("exe", exe))
|
||||
print("%-10s %s" % ("pid", pid))
|
||||
print("%-10s %s" % ("ppid", ppid))
|
||||
print("%-10s %s" % ("uid", uids))
|
||||
print("%-10s %s" % ("gid", gids))
|
||||
for fd, path in files.items():
|
||||
print("%-10s %s" % ("fd[%i]" % fd, path))
|
||||
|
||||
return
|
||||
Loading…
Reference in new issue