¿Cuáles son estas cadenas de memoria? ¿Qué hacen?

¿Cuáles son estas cadenas de memoria? ¿Qué hacen?

Recientemente, descarté mis cadenas de memoria (solo porque podía) usando sudo cat /dev/mem | strings. Al revisar este volcado, noté algunas cosas muy interesantes:

.symtab
.strtab
.shstrtab
.note.gnu.build-id
.rela.text
.rela.init.text
.rela.text.unlikely
.rela.exit.text
.rela__ksymtab
.rela__ksymtab_gpl
.rela__kcrctab
.rela__kcrctab_gpl
.rela.rodata
.rodata.str1.8
.rela__mcount_loc
.rodata.str1.1
.rela__bug_table
.rela.smp_locks
.modinfo
__ksymtab_strings
.rela__tracepoints_ptrs
__tracepoints_strings
__versions
.rela.data
.data.unlikely
.rela__verbose
.rela__jump_table
.rela_ftrace_events
.rela.ref.data
.rela__tracepoints
.rela.gnu.linkonce.t6

Todas estas líneas parecen estar relacionadas de alguna manera: todas están (muy) cerca una de otra en la memoria, todas tienen .<name>prefijos similares y todas parecen referirse entre sí.

¿Qué causaría que aparecieran estas cadenas y por qué?

Respuesta1

+1 a lo que @jos dijo anteriormente ("google it"). En este caso particular deberías eliminar las partes ".rela_" y "_gpl". Encontrarás que estos son símbolos del núcleo. "rela" es un acrónimo de "reubicación" y tiene que ver con el formato de archivo ELF. Todos estos son temas interesantes y le animo a que los investigue más a fondo.

Respuesta2

Se parecen mucho a los nombres de las secciones del kernel de Linux. Los que tienen el prefijo .rela contienen información de reubicación para la sección nombrada, por ejemplo, .rela.text es la información de reubicación para la sección de texto (donde se almacena el código objeto del kernel).

Otras secciones de interés son:

  1. .modinfo - información del módulo del kernel
  2. .rela.__ksymtab - tabla de reubicación de la tabla de símbolos del kernel
  3. .rela.data - tabla de reubicación de la sección de datos del kernel
  4. rodata.str1.1 - sección de datos de solo lectura para cadenas

etcétera.

Al ejecutar cadenas en /dev/mem simplemente se encontrarán cadenas interesantes en la memoria física del sistema; por lo tanto, logró encontrar algunas cadenas que se encuentran en el kernel de Linux vmlinuz sin comprimir.

información relacionada