Найти в Дзене

Linux: анализируем бинарные файлы. Часть 2. Интересные места.

Полезные устройства и файлы в Linux В операционной системе Linux есть множество файлов, устройств и записей каталога /proc, которые могут быть очень полезны и крайне интересны для изучения.  Вот пример некоторых из них: Файл /proc/<pid>/maps содержит структурную схему образа процесса, он показывает каждый регион отображённый в виртуальную память процесса: исполняемый файл, разделяемые библиотеки, стек, куча, vDSO (virtual dynamic shared object, виртуальный динамический разделяемый объект) и многое другое. Этот файл имеет критически важное значение для возможности быстрого анализа структуры адресного пространства процесса. Файл /proc/kcore - это запись в файловой системе proc, которая действует, как динамический файл ядра Linux. Она представляет из себя необработанный дамп памяти, в виде двоичного файла формата ELF, который может использоваться программой GDB для отладки и анализа функций ядра. Файл System.map доступен практически во всех версиях дистрибутивов Linux и может оказаться оч
Оглавление
Пингвин - это логотип линейки операционных систем Linux. Автор: pixabay.com
Пингвин - это логотип линейки операционных систем Linux. Автор: pixabay.com

Полезные устройства и файлы в Linux

В операционной системе Linux есть множество файлов, устройств и записей каталога /proc, которые могут быть очень полезны и крайне интересны для изучения. 

Вот пример некоторых из них:

/proc /<pid>/maps

Файл /proc/<pid>/maps содержит структурную схему образа процесса, он показывает каждый регион отображённый в виртуальную память процесса: исполняемый файл, разделяемые библиотеки, стек, куча, vDSO (virtual dynamic shared object, виртуальный динамический разделяемый объект) и многое другое. Этот файл имеет критически важное значение для возможности быстрого анализа структуры адресного пространства процесса.

/proc/kcore

Файл /proc/kcore - это запись в файловой системе proc, которая действует, как динамический файл ядра Linux. Она представляет из себя необработанный дамп памяти, в виде двоичного файла формата ELF, который может использоваться программой GDB для отладки и анализа функций ядра.

/boot/System.map

Файл System.map доступен практически во всех версиях дистрибутивов Linux и может оказаться очень полезным для отладки ядра. Он содержит в себе все отладочные символы для ядра Linux.

/proc/kallsyms

Файл /proc/kallsyms очень похож на System.map, за исключением того, что эта запись файловой системы proc, которая обслуживается ядром системы и динамически обновляется. Это означает, что при установке любых новых LKM, отладочные символы будут добавлены в запись /proc/kallsyms налету.

Запись /proc/kallsyms содержит в себе, если не все, то как минимум большую часть символов ядра и будет содержать их все, в том случае, если это будет напрямую указано в конфигурации ядра: CONFIG_KALLSYMS_ALL.

/proc/iomem

Файл /proc/iomem - очень полезная запись каталога /proc. Она очень похожа на уже знакомую нам запись /proc/<pid>/maps, но используется полностью для всей системной памяти. Если, к примеру, вы захотите узнать в какую область физической памяти отображается текстовый сегмент ядра, вы можете использовать поиск, задав в качестве аргумента строку Kernel. Вы тут же найдёте и увидите полный диапазон адресов сегмента кода/текста, сегмента данных и сегмента bss.

Другие материалы по теме анализа бинарных файлов в Linux

  • Linux: анализируем бинарные файлы. Часть 1. Программное обеспечение.
  • Linux: анализируем бинарные файлы. Часть 3. Переменные окружения.
  • Linux: анализируем бинарные файлы. Часть 4. Скрипты компоновщика.