Eu já tentei descompactar, gzip e todas as outras soluções que surgem como resultados do google e essas não funcionaram para mim.
Para obter apenas a pesquisa de imagens da assinatura GZ -
1f 8b 08 00
.> od -A d -t x1 vmlinuz | grep '1f 8b 08 00' 0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
então a imagem começa às
24576+8 => 24584
. Em seguida, basta copiar a imagem do ponto e descompactá-la -> dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux 1450414+0 records in 1450414+0 records out 1450414 bytes (1.5 MB) copied, 6.78127 s, 214 kB/s
Obtenha estas instruções literalmente em um fórum on-line: http://www.codeguru.com/forum/showthread.php?t=415186
Esse processo não funciona para mim e acaba gerando erros que indicam o arquivo não encontrado 0024576 e todos os números subseqüentes.
Como proceder para extrair o vmlinux do vmlinuz?
Obrigado.
EDITADO: Esta é uma questão de engenharia reversa. Não tenho acesso à distribuição para instalar qualquer RPM ou recompilar. Começo com nada além de vmlinuz.
fonte
Respostas:
Talvez você tenha entendido mal o que o autor desse post significava.
O
vmlinuz
arquivo contém outras coisas além do conteúdo compactado, então você precisa descobrir onde o conteúdo compactado começa. Para fazer isso, use:O que isso faz é mostrar onde, nesse arquivo, você pode encontrar o cabeçalho gzip. A saída se parece com:
Isso significa que
0024576
(pelo menos para o autor da postagem, o seu pode estar em algum lugar completamente diferente) novmlinuz
arquivo, você encontrará os valores binários "24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
". Você está procurando1f 8b 08 00
, que pode ser encontrado do personagem 9 em diante ou em0024576 + 8
(comece a contar de 0)= 24584
.Agora que você sabe onde o conteúdo compactado é compactado (na posição
24584
), você pode usardd
para extrair esse conteúdo compactado e descompactá-lo. Para fazer isso, use:O primeiro comando procurará nessa posição e copiará tudo para stdout.
zcat
então, descompactará tudo o que obtém do stdin e exibirá a string não compactada no stdout. Em seguida, o>
redirecionarázcat
a saída para um novo arquivo chamadovmlinux
.fonte
od
saída de. Use bgrep para procurar1f8b0800
. 2) O kernel é compactado usando um algoritmo diferente. Tentefd377a585a00
para xz ou425a6839
para bzip2 .As fontes do kernel agora contêm um script para isso
extract-vmlinux
,. Você não precisa rolar sozinho.Veja esta resposta SO .
fonte
apt-file search extract-vmlinux
fornece vários pacotes de cabeçalho do kernel do linux elocate extract-vmlinux
leva a alguns hits na minha máquina local Ubuntu 18.04:/usr/src/linux-headers-4.15.0-33/scripts/extract-vmlinux
embora nadaPATH
pareça.Na verdade, antes de gerar o
vmlinuz
arquivo, a maioria dos símbolos é removida. Então você não pode reconstruir um verdadeirovmlinux
partirvmlinuz
, o arquivo não será tão útil para depurar.fonte
Corri para um problema simples - procurando a versão correta do vmlinux para travar. Em vez de tentar descomprimir o vmlinuz no vmlinux.
A melhor solução é: instalar o RPM
kernel-debuginfo
:, que o RPM contém o arquivo vmlinux adequado.Preste atenção ao nome da rpm, existem vários nomes semelhantes (confusos). Tem de ser:
kernel-debuginfo-$(version).rpm
fonte
Os kernels modernos nem sempre (de fato, geralmente) não são compactados com gzip. Eles podem usar bzip2 ou LZMA. Uma pesquisa rápida na Web não me ajudou a encontrar as seqüências mágicas para esses métodos de compactação - é melhor verificar várias imagens do kernel para encontrar o cabeçalho invariável que inclui o código de descompactação.
fonte
As linhas de descompressão acima funcionaram para mim e, é claro, o kernel foi removido. Portanto, não há boas informações lá.
Se você precisar fazer alterações no seu kernel antigo, como colocá-lo em depuração, use
uname -r
para obter a revisão do seu kernel e obter sua fonte:A fonte estará na
/usr/src/linux...
cd
árvore de fontes e:Isso tentará encontrar o arquivo que contém a configuração do kernel atualmente em execução - geralmente
e use-o para essa compilação, recriando o kernel em execução.
Construa da maneira que você deseja; tenha acesso ao kernel sem remoção, conforme necessário.
As conchas acima provavelmente não encontrarão o número mágico gzip devido ao espaçamento. Sim, eles ainda estão comprimidos da mesma maneira, embora eu esteja escrevendo um ano após a discussão original. Envie a saída para
less
e pesquise1f 8b
ou mesmo1f
. Verifique o restante dos bytes manualmente para determinar uma correspondência e verifique se você tem a primeira instância. Use o deslocamento encontrado lembrando que é decimal.fonte