O que são essas strings de memória? O que eles fazem?

O que são essas strings de memória? O que eles fazem?

Recentemente, descartei minhas strings de memória (só porque pude) usando sudo cat /dev/mem | strings. Ao revisar este dump, notei algumas coisas muito interessantes:

.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 essas linhas parecem estar relacionadas de alguma forma: estão todas (muito) próximas umas das outras na memória, todas têm .<name>prefixos semelhantes e todas parecem referir-se umas às outras.

O que faria com que essas strings aparecessem e por quê?

Responder1

+1 no que @jos disse acima ("google it"). Neste caso específico você deve remover as partes ".rela_" e "_gpl". Você descobrirá que estes são símbolos do kernel. "rela" é um acrônimo para "relocation" e tem a ver com o formato de arquivo ELF. Todos esses são tópicos interessantes e encorajo você a examiná-los mais detalhadamente.

Responder2

Eles se parecem muito com nomes de seções do kernel Linux. Aqueles prefixados por .rela contêm informações de realocação para a seção nomeada, por exemplo, .rela.text é a informação de realocação para a seção de texto (onde o código do objeto do kernel é armazenado).

Outras seções de interesse são:

  1. .modinfo - informações do módulo do kernel
  2. .rela.__ksymtab - tabela de realocação da tabela de símbolos do kernel
  3. .rela.data - tabela de realocação da seção de dados do kernel
  4. rodata.str1.1 - seção de dados somente leitura para strings

etc.

Executar strings em /dev/mem apenas encontrará strings interessantes na memória física do sistema; portanto, você conseguiu encontrar algumas strings que estão no kernel vmlinuz linux descompactado.

informação relacionada