Изучение содержимого оперативной памяти

12

Я использую базу данных Redis и хотел бы изучить содержимое оперативной памяти, используемой приложением.

Я чувствую, что объяснение того, почему я хочу это сделать, будет иметь больше смысла, чем вопрос, который я задам.

Redis - это простое хранилище значений ключей, в котором хранятся двоичные данные. Я думаю, что это было бы хорошим местом для изучения таких вещей, как кодирование, и мне было бы интересно заняться такими вещами, как просмотр оперативной памяти в поисках двоичных наборов данных, например, поиск простых шаблонов; возможно, исследовать идею написания детского языка запросов, который ищется в оперативной памяти.

Я получил эту идею после прочтения главы в SICP о языках запросов.

Есть мысли о том, с чего начать? Вначале я хочу попросить «дать мне адресное пространство, в котором работает это приложение, пожалуйста».

MageProspero
источник

Ответы:

7

Вы можете использовать GDB для доступа к памяти процесса.

Также вам следует взглянуть на файловую систему "/ proc" - она ​​содержит псевдофайлы для каждого процесса; некоторые из них могут содержать интересную информацию

Jakob
источник
7

cat /proc/[pid]/maps в соответствии с процедурой.

Похоже, что вы хотите. Если вам нужен pid, возьмите его с ps или любого другого инструмента.

Это адреса для поиска адресного пространства в использовании. Один из сотрудников defcon в прошлом году внедрил createremotethread в Linux. Таким образом, вы могли бы сделать это ... затем прочитать произвольную память таким образом.

Кредит psusi для указывая на то , что pmap -x [pid]легче читать.

RobotHumans
источник
3
Обратите внимание, что pmapформатирует эту информацию, чтобы она была более читабельной.
psusi
6

Используйте отладчик, вот для чего они.

Если вы хотите накатить свое, все проходит ptrace.

Вы можете увидеть карту памяти процесса (оглавление для памяти) /proc/$pid/mapsи прочитать все содержимое памяти /proc/$pid/mem. Вы не можете просто открыть этот последний файл как обычно, см. Как я могу прочитать из / proc / $ pid / mem под Linux?

Жиль "ТАК - перестань быть злым"
источник
1
Вы были невероятно полезны с некоторыми из моих вопросов. Предлагаете ли вы какие-либо книги для чтения, в основном относящиеся к ОС Linux, или особенно интересные веб-статьи?
MageProspero