Есть ли способ увидеть содержимое оперативной памяти? От первого байта до последнего. Хотелось бы посмотреть, где в оперативной памяти находится ОС и все запущенные на ней процессы. Это возможно?
Есть ли способ увидеть содержимое оперативной памяти? От первого байта до последнего. Хотелось бы посмотреть, где в оперативной памяти находится ОС и все запущенные на ней процессы. Это возможно?
Ответы:
Вы могли бы использовать отладчик ядра, который позволял бы получать доступ к «сырой» памяти, как SoftICE для Windows . Вы также можете настроить GDB в качестве отладчика для ядра Linux . Если виртуальная машина является опцией, некоторые программы виртуализации поддерживают сохранение состояния машины (включая ОЗУ) на диск, который затем можно проанализировать . Однако следует отметить, что большинство «современных» операционных систем используют рандомизацию размещения адресного пространства (ASLR). Настоящая карта физической памяти системы специально фрагментирована, чтобы помочь смягчить различные проблемы безопасности и эксплойты (например , переполнение буфера в стеке / куче ).
Однако для данной программы, работающей в современной операционной системе, вы можете получить логическую карту памяти для данного процесса / потока - при условии, что у вас есть соответствующие символы отладки и отладчик. Если вам нужен общий вид, если программное / аппаратное обеспечение использует виртуальную память , ситуация становится значительно более сложной. Опять же, хотя, если вы буквально хотите, что только в оперативной памяти, см. Первый абзац.
В Windows к содержимому физической памяти можно получить доступ через \Device\PhysicalMemory
объект в диспетчере объектов . Для этого требуется доступ к системе на уровне ядра, а это значит, что для доступа к этому объекту вам потребуется установить программу, скорее всего, драйвер режима ядра.
В Linux к содержимому физической памяти можно напрямую обращаться как к двоичным данным, читая /dev/mem
как root
. Смотрите Что такое / dev / mem? и mem(4)
справочную страницу для более подробной информации.
Я не уверен, почему вам нужно определить, где операционная система и процессы расположены в физической памяти, хотя ...
\Device\PhysicalMemory
(эквивалентно /dev/kmem
), как это делают утилиты RAMMap и PhysMem .
\DevicePhysicalMemory
объект нельзя открыть из пользовательского режима. RAMmap и большинство других инструментов sysinternals включают драйвер режима ядра для выполнения этой части своей работы.