Как вывести образ памяти из системы Linux?

18

Я знаю, чтобы сбросить образы памяти в Windows. (например, dumpit) Но я не знаю, как создавать дамп памяти в Linux.

Я хочу получить образы памяти в Linux и из Linux в Linux с ssh-соединением или чем-то еще.

Как я могу получить в Linux?

bakie
источник
5
Вы пытаетесь получить память от запущенного процесса, памяти ядра или сырой физической памяти? Все доступны, но методы доступа различаются. Смотрите / dev / kmem, / dev / mem, / proc / kcore, / proc / $ pid / maps и / proc / $ pid / mem.
Кейси
Взгляните на этот SU Q & A: superuser.com/questions/164960/…
slm

Ответы:

26

Из Вики по криминалистике: Инструменты: Отображение памяти

выдержка

Linux

/ DEV / MEM

В старых системах Linux программа dd может использоваться для чтения содержимого физической памяти из файла устройства / dev / mem. Однако в последних системах Linux / dev / mem предоставляет доступ только к ограниченному диапазону адресов, а не к полной физической памяти системы. В других системах он может быть недоступен вообще. В ядре Linux серии 2.6 существовала тенденция к сокращению прямого доступа к памяти через файлы псевдоустройств. См., Например, сообщение, сопровождающее этот патч: http://lwn.net/Articles/267427/ .

/ DEV / аварии

В системах Red Hat (и в тех, в которых работают связанные дистрибутивы, такие как Fedora или CentOS), драйвер аварийного завершения может быть загружен для создания псевдоустройства / dev / crash для доступа к сырой физической памяти (с помощью команды "modprobe crash"). Этот модуль также может быть скомпилирован для других дистрибутивов Linux с небольшими усилиями (см., Например, http://gleeda.blogspot.com/2009/08/devcrash-driver.html ). Когда драйвер сбоя модифицируется, компилируется и загружается в других системах, получающееся в результате устройство доступа к памяти не является полностью безопасным для создания образа. Необходимо соблюдать осторожность, чтобы избежать адресов, которые не поддерживаются RAM. В Linux / proc / iomem предоставляет правильные диапазоны адресов для изображения, помеченного как «Системная память».

Второй взгляд: криминалистика памяти Linux

Этот коммерческий продукт судебной экспертизы памяти поставляется с модифицированной версией аварийного драйвера и скриптом для безопасного сброса памяти с использованием оригинального или модифицированного драйвера в любой конкретной системе Linux.

fmem fmem - репозиторий github

fmem - это модуль ядра, который создает устройство / dev / fmem, аналогично / dev / mem, но без ограничений. Это устройство (физическое ОЗУ) можно скопировать с помощью dd или другого инструмента. Работает на ядрах Linux 2.6. Под GNU GPL.

LiME - Linux Memory Extractor

Linux Memory Extractor (LiME) - это загружаемый модуль ядра (LKM), который позволяет получать энергозависимую память от устройств на базе Linux и Linux, таких как устройства на платформе Android. Инструмент поддерживает дамп памяти либо в файловую систему устройства, либо по сети.

Я нашел этот пример fmemиспользования, который, кажется, является самым простым способом выгрузки памяти для целей анализа, который вы больше не можете использовать /dev/memпосле ядер 2.6.x, насколько я понимаю.

Пример fmem

$ ./run.sh
...
----Memory areas: -----
reg00: base=0x000000000 (    0MB), size= 1024MB, count=1: write-back
reg01: base=0x0c8800000 ( 3208MB), size=    2MB, count=1: write-combining
-----------------------
!!! Don't forget add "count=" to dd !!!


$ ls /dev/f*
/dev/fb0  /dev/fd0  /dev/fmem  /dev/full  /dev/fuse


$ sudo dd if=/dev/fmem of=/tmp/fmem_dump.dd bs=1MB count=10
10+0 records in
10+0 records out
10000000 bytes (10 MB) copied, 0.0331212 s, 302 MB/s

* Источник: Как я могу сбросить всю физическую память в файл?

Пример LiME

Для анализа энергозависимой памяти также есть страница под названием: Анализ памяти Linux . В этом видеоуроке есть подробный пример, который показывает использование LiME и Volatility для сбора дампа памяти, а затем его анализа, извлечения истории Bash пользователя из дампа памяти.

Что еще?

Также есть вопросы и ответы U & L под названием: Как я могу сбросить всю системную память? который имеет дополнительные примеры и информацию.

SLM
источник
-3
dc3dd if=/proc/kcore of=/mount/.
Larytet
источник
2
Некоторое объяснение было бы неплохо.
PHK