Red de conocimiento informático - Conocimiento informático - Cómo editar el disco ram en boot.img

Cómo editar el disco ram en boot.img

En primer lugar, debe tener un teléfono fastboot desbloqueado por el usuario, que le permitirá actualizar ROM de terceros.

En segundo lugar, debe poder encontrar el boot.img o sec_boot.img correspondiente (firmado ) para la versión actual. Por lo general, puede actualizar el paquete dentro del sec_boot.img desbloqueado a través de cat mtd (no sé si funciona).

Herramienta:

split_bootimg.pl se puede encontrar fácilmente buscando en Google

mkbootfs y mkbootimg se pueden descargar de Internet, lo mejor es compilarlos directamente

1) sec_boot.img está firmado, es necesario eliminar los primeros 0x1000 bytes del archivo. Elimine los primeros 0x1000 bytes del archivo, es decir, ¡todos los bytes anteriores a ANDROID! Elimine los 8 caracteres y guárdelo como boot.img

2) Ejecute perl split_bootimg.pl boot.img para extraer los archivos del kernel y del disco RAM, y anote la "línea de comando" en el resultado. : vmalloc=384M mem=2044m@0x200000. . . . ".Hay una larga cadena de caracteres disponible

3) Ejecute el comando para extraer el archivo ramdisk

mkdir ramdisk

cd ramdisk

gzip -dc .../boot.img-ramdisk.gz | cpio -i

cd .

4) Modificar los archivos que contiene, por ejemplo, creo que persisten. .sys en default.prop .usb.config=manufacture, adb no es bueno, quiero cambiarlo a =adb, modificarlo y guardarlo.

Si desea que adb tenga permisos de root, continúe cambiando ro.secure y ro.debuggable

5) Repackage

mkbootfs ./ramdisk gzip ramdisk-new.gz;

Por supuesto, si compiló su propio mkbootfs pero no lo agregó a la ruta, simplemente descargue el programa compilado en el directorio actual y ejecute ./mkbootfs...

Generar boot-new.img

mkbootimg --cmdline 'Usa comillas simples para copiar la cadena larga después de los dos puntos de la línea de comando recién escrita' --kernel boot.img-kernel --ramdisk ramdisk- new .gz -o boot-new.img

6) Ahora, si actualiza directamente el boot-new.img generado en el teléfono, el teléfono no se iniciará. El problema radica en el kernel, el disco RAM. y segunda etapa, dirección de etiquetas,

Compile su propio mkbootimg y vea el archivo .c, verá base = 0x10000000 y el boot-new.img generado se ajusta a las siguientes reglas:

dirección del kernel = base 0x00008000, dirección del disco ram = base 0x01000000,

dirección de la segunda etapa = base 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = 0x00f00000, dirección de etiqueta = base 0x00000100.

Esto es diferente de la dirección sec_boot.img original. Quiero encontrar el valor base correcto, pero pocas de las direcciones img originales siguen este patrón. Solo puedo mirar fijamente sin obtener el código fuente. El método más sencillo es utilizar un editor hexadecimal para cambiar las cuatro direcciones de boot-new.img a los valores originales, como se muestra en la siguiente figura: