Cómo extraer el archivo ramdisk de boot.img
En segundo lugar, debe poder encontrar el boot.img o sec_boot.img correspondiente (firmado ) para la versión actual. Normalmente puedes obtenerlo desbloqueando el paquete sec_boot.img, a través de cat mtd. No sé si es posible.
Herramientas:
split_bootimg.pl
mkbootfs y mkbootimg
1) sec_boot.img está firmado, debes eliminar el primero parte del archivo 0x1000 bytes, es decir, ¡todos los bytes antes de ANDROID! 8 personajes. 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 "línea de comando: vmalloc=384M mem=2044m@0x200000" en el resultado. 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
gzip -dc ..../boot.img-ramdisk.gz | cpio -i
cd .
4) Modifique los archivos que contiene, por ejemplo, creo que persist.sys.usb.config=manufacturing, adb en default.prop 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 compilaste tu propio mkbootfs pero no lo agregaste a la ruta, simplemente prueba el programa compilado en el directorio actual y ejecuta ./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 arrancará. El problema radica en el kernel, ramdisk, segundo. stage, tags,
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 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 = 0 x 00f00000, 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 simple es usar un editor hexadecimal para modificar las 4 direcciones correspondientes en boot-new.img a los valores originales. img es el valor original, como se muestra en la figura:
7) Después de guardar, puede iniciar fastboot y luego verificar si se puede iniciar ^_^. Si no se puede iniciar, se puede iniciar. no es un ladrillo, porque tenemos recuperación y fastboot que no se pueden actualizar. Puedes usar estos dos métodos para recuperar
.