Память дампа процесса

При чтении/proc/$PID/maps Вы получаете регионы расширенной памяти. Существует ли способ вывести одно из этого регионы?

$ 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]...

Спасибо

8
задан osgx 13 May 2013 в 17:23
поделиться

3 ответа

Нет! Вызовите ptrace () с PTRACE ATTACH . Затем откройте / proc / / mem , найдите смещение области и прочтите длину области, как указано в / proc / maps .

Вот программа , которую я написал , которая делает это на C. Вот модуль, который я написал , который делает это на Python ( и привязка ptrace ). В завершение - программа , которая выгружает все области процесса в файлы .

Наслаждайтесь!

12
ответ дан 5 December 2019 в 07:56
поделиться

Вы можете присоединить GDB к процессу, а затем выгрузить область памяти длиной X слов, начиная с позиции L, следующим образом: x / Xw L .

Присоединить gdb при запуске процесса очень просто: gdb ./executable, затем запустите . Если вам нужно подключиться к запущенному процессу, запустите gdb, затем gdb attach pid , где pid - это идентификатор процесса, который вам нужен.

5
ответ дан 5 December 2019 в 07:56
поделиться

Использование dd (1):

sudo dd if=/dev/mem bs=1 skip=$(( 16#0059e000 - 1 )) \
        count=$(( 16#005b1000 - 16#0059e000 + 1)) | hexdump -C
4
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: