Tutoriales

Cómo extraer y desensamblar archivos vmlinuz

Recientemente, escribimos un artículo sobre Cómo desempaquetar initrd o initramfs para ver contenido en LinuxDespués de eso, pensé que debería escribir un artículo sobre la extracción de VMlinuz.

Obviamente, te estarás preguntando, ¿Por qué extraer VMInuz? ¿para qué sirve? La extracción del código ensamblador puede ser útil cuando desea depurar dónde ocurre un problema y cómo se ejecuta una función en particular.

En este artículo, aprenderá cómo extraer y desensamblar (leer) archivos vmlinuz en Linux.

¿Qué es vmlinuz?

Una máquina virtual es un comprimido linux centro imagen capaz bota Esta sistema y cargue el núcleo en la memoria. En última instancia, te ayuda con las aplicaciones diarias.

Además, vmlinux es un Ejecutables vinculados estáticamente, lo que significa que el kernel admite formatos de archivos de objetos como Duende, CAFÉ, y a.fuera.

La gente se confunde entre los dos. máquina virtual y VMlinux Debido al mismo nombre, pero los dos son diferentes. VMlinux es un sin comprimir y no iniciable Versión máquina virtual.

Para explicarte, déjanos bifurcación máquina virtual. Esta máquina virtual acrónimo significa Memoria virtual, y Linuz es un versión comprimida de linux.

usted puede /puesta en marcha Directorios, convenciones de nomenclatura incluidas en las versiones del kernel.Por ejemplo vmlinuz-5.10.0-11-amd64.

El primer y más importante paso es descargar un script que lo ayudará a descomprimir VMLinuz a un formato de archivo de objeto como ELF.

Después de eso, podemos usar volcado de objetos comando para desensamblar VMLinuz.

objdump es parte de GNU Binutils. Primero, verifique si Binutils está instalado. Si no, podemos descargarlo desde el administrador de paquetes.

$ objdump --version
$ sudo apt install binutils            // Debian/Ubuntu
$ sudo dnf install binutils            // AlmaLinux/Fedora

Ya hay un script disponible en el proyecto Linux en Github, solo necesita pasar algunos comandos para descargar el script que desea usar.

$ wget -O extract-vmlinux https://raw.githubusercontent.com/torvalds/linux/master/scripts/extract-vmlinux

Después de descargar el script, puede refinación documento. antes de que, crear Una temporal contenido Allí extraerás VMLiuz.

$ mkdir /tmp/extract-kernel
$ cd extract-kernel

Después de eso, copie el kernel actual en la carpeta recién creada y verifique file escribe.

$ sudo cp /boot/vmlinuz-$(uname -r) .
$ file vmlinuz-5.10.0-9-amd64 
Output:

vmlinuz-5.10.0-9-amd64: Linux kernel x86 boot executable bzImage, version 5.10.0-9-amd64 ([email protected]) #1 SMP Debian 5.10.70-1 (2021-09-30), RO-rootFS, swap_dev 0x6, Normal VGA

El siguiente y último paso extracción Es a través del siguiente código, primero vamos refinación Esta comprimido centroDespués de eso, comprobará documento escribe.

$ sudo bash extract-vmlinux vmlinuz-$(uname -r) > vmlinuz
$ file vmlinuz
Output:

vmlinuz: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=23eb9b22614b52c9c3e7105ac116a67ce749404d, stripped

De acuerdo con el archivo de salida descomprimido con éxito en Duende Propósito.

Desmonte el archivo vmlinuz usando objdump

No puede leer este archivo usando gato O cualquier otro editor de texto; incluso si lo hiciera, imprimiría datos oscuros que no podemos leer.Entonces, para satisfacer este requisito, podemos usar volcado de objetos, que puede leer el archivo de destino.

Ha extraído el núcleo comprimido de los pasos anteriores para Propósito documento.nos deja leer Archivo de objeto usando el siguiente comando.

$ cd extract-kernel
$ objdump -D vmlinuz | less

No se pierda la canalización de datos a través de menos para leer el contenido.

Output:

vmlinuz:     file format elf64-x86-64


Disassembly of section .text:

ffffffff81000000 <.text>:
ffffffff81000000:       48 8d 25 51 3f 60 01    lea    0x1603f51(%rip),%rsp        # 0xffffffff82603f58
ffffffff81000007:       48 8d 3d f2 ff ff ff    lea    -0xe(%rip),%rdi        # 0xffffffff81000000
ffffffff8100000e:       56                      push   %rsi
ffffffff8100000f:       e8 4c 04 00 00          callq  0xffffffff81000460

envolver

Esto es extracción y desmontaje. máquina virtual archivos en Linux.

Si tiene alguna dificultad para leer nuestros artículos, háganoslo saber en la sección de comentarios.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba