chiesta di memoria di un proces
-
30-09-2020 - |
Domanda
03Cp> Quando si legge / Proc / $ PID / Maps ottieni le regioni di memoria mappate. n è un modo per scaricare una delle questi regioni?u003C/
$ cat /proc/18448/maps
...[snip]...
0059e000-005b1000 r-xp 00000000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
005b1000-005b2000 r--p 00012000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
005b2000-005b3000 rw-p 00013000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
...[snip]...
03Cp> Grazieu003C/
Soluzione
03Cp> NAH! Chiama ptrace()
con PTRACE ATTACH
. Quindi aprire /proc/<pid>/mem
, cercare la regione offset e leggi la lunghezza della regione come indicato nel /proc</pid>/maps
.u003C/
03Cp> Ecco un 03Ca href="https://github.com/anacrolix/archive/blob/master/tibia/butox/cutil/readmem.c" rel="nofollow noreferrer">Programma ho scrittou003C/ che è in C. Ecco un 03Ca href="https://github.com/anacrolix/archive/blob/master/tibia/butox/memutil.py" rel="nofollow noreferrer">Modulo ho scrittou003C/ che lo fa in Python (03Ca href="https://github.com/anacrolix/archive/blob/master/tibia/butox/ptrace.py" rel="nofollow noreferrer">E il vincolante PTtraceu003C/). Per il finale, un 03Ca href="https://github.com/anacrolix/archive/blob/master/tibia/butox/dump_memory.py" rel="nofollow noreferrer">Programma che scarica tutte le regioni di un processo ai fileu003C/.u003C/
03Cp> Divertiti!u003C/
Altri suggerimenti
03Cp> È possibile allegare GDB al processo, quindi scaricare la regione di memoria di lunghezza x parole che iniziano nella posizione L con questo: x/Xw L
.u003C/
03Cp> Allegarsi GDB Quando si avvia il processo è semplice: gdb ./executable
poi run
. Se è necessario allegare a un processo di esecuzione, avviare GDB quindi gdb attach pid
dove PID è l'ID di processo a cui ti interessa.u003C/
03Cp> Usando DD (1):u003C/
sudo dd if=/dev/mem bs=1 skip=$(( 16#0059e000 - 1 )) \
count=$(( 16#005b1000 - 16#0059e000 + 1)) | hexdump -C