É possível obter a imagem do kernel (bzImage, vmlinuz, etc.) de um sistema em execução lendo a memória do sistema?
relate perguntas
-
Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?
-
Inicie/pare o serviço systemd usando o atalho de teclado [fechado]
-
Necessidade de algumas chamadas de sistema
-
astyle não altera a formatação do arquivo de origem
-
Passe o sistema de arquivos raiz por rótulo para o kernel do Linux
Não isso não é possível.
O problema básico é que apesar da imagem do kernel ser carregada diretamente na memória, esta imagem é alterada no momento em que o kernel é inicializado. Embora o kernel não seja realmente um programa, muitas das regras sobre a forma como um programa é compilado/carregado na memória ainda se aplicam.
Tome o seguinte código C como exemplo:
A primeira linha
x=5
diz ao compilador para colocar o número 5 em um byte em algum lugar da memória para uso posterior. Quando o programa for executado, esse byte será carregado diretamente na memória junto com todo o resto.A última linha
x=100
diz ao compilador para escrever código de máquina que, quando executado, sobrescreverá o valor original. Portanto, se você extraiu o programa em execução da memória e o descompilou, poderá ver algo assimEfetivamente, o programa em execução foi reescrito.
Da mesma forma, os programas user-land são armazenados no formato ELF . Quando você executa um programa userland, o carregador do programa precisa montar a imagem do programa a partir de várias partes. Agora as regras para o Kernel são um pouco diferentes, mas existe um paralelo com o
modprobe
qual carrega outros arquivos no espaço de memória do Kernel em execução.Portanto, embora você possa encontrar uma maneira de despejar toda a memória do seu Kernel, o resultado não será muito parecido com a imagem original do Kernel e certamente não será suficiente para inicializar a partir dela.
Aqui, receio que sua melhor opção seja ir aos administradores de sistema e pedir uma cópia ou solicitar acesso.