Buenas, estos ultimos dias he estado dedicándolos a todo esto del bootloader :pensando:
Lo primero que hice fue intentar desbloquear el bootloader con "fastboot oem unlock". Sabía que obviamente no funcionaría, pero por curiosidad llega a aparecer esto, pero después se bloquea y hay que reiniciar:
http://i.imgur.com/XALvX5i.jpg?2
Nunca lo había probado, daba por hecho que saldría algo parecido. No da ninguna pista sobre el desbloqueo del bootloader.
He desensamblado las particiones del MX5 en formatos ARM little endian, en lugar de Metapc y hex como hacia antes. Lo he hecho con todas las particiones detenidamente para buscar alguna vulnerabilidad en el arranque
Esto llevo averiguado por ahora:
Para empezar, esta es la secuencia de arranque del MX5 sobre la emmc:
Name Start Size
pgpt 0x0000000000000000 0x0000000000080000
proinfo 0x0000000000080000 0x0000000000700000
nvram 0x0000000000780000 0x0000000000500000
devinfo 0x0000000000c80000 0x0000000000040000
rstinfo 0x0000000000cc0000 0x0000000001400000
protect1 0x00000000020c0000 0x0000000000a00000
protect2 0x0000000002ac0000 0x0000000000a00000
seccfg 0x00000000034c0000 0x0000000000040000
lk 0x0000000003500000 0x0000000000060000
boot 0x0000000003560000 0x0000000001000000
recovery 0x0000000004560000 0x0000000001400000
secro 0x0000000005960000 0x0000000000600000
para 0x0000000005f60000 0x0000000000300000
logo 0x0000000006260000 0x0000000000800000
custom 0x0000000006a60000 0x0000000020000000
expdb 0x0000000026a60000 0x0000000000a00000
tee1 0x0000000027460000 0x0000000000500000
tee2 0x0000000027960000 0x00000000006a0000
system 0x0000000028000000 0x0000000060000000
cache 0x0000000088000000 0x000000001a800000
userdata 0x00000000a2800000 0x00000006a4380000
flashinfo 0x0000000746b80000 0x0000000001000000
sgpt 0x0000000747b80000 0x0000000000080000He comprobado el comienzo de la partición con el tamaño a ver si coincidia con el comienzo de la siguiente y efectivamente es así. En algunos móviles puede haber alguna partición oculta, pero después de esta comprobación está descartado ese caso.
Esta es la secuencia de arranque completa, tanto de la emmc como el resto de memorias del móvil:
major minor #blocks name
7 0 12166 loop0
179 0 30535680 mmcblk0
179 1 7168 mmcblk0p1
179 2 5120 mmcblk0p2
179 3 256 mmcblk0p3
179 4 20480 mmcblk0p4
179 5 10240 mmcblk0p5
179 6 10240 mmcblk0p6
179 7 256 mmcblk0p7
179 8 384 mmcblk0p8
179 9 16384 mmcblk0p9
179 10 20480 mmcblk0p10
179 11 6144 mmcblk0p11
179 12 3072 mmcblk0p12
179 13 8192 mmcblk0p13
179 14 524288 mmcblk0p14
179 15 10240 mmcblk0p15
179 16 5120 mmcblk0p16
179 17 6784 mmcblk0p17
179 18 1572864 mmcblk0p18
179 19 434176 mmcblk0p19
179 20 27856384 mmcblk0p20
179 21 16384 mmcblk0p21
179 96 4096 mmcblk0rpmb
179 64 4096 mmcblk0boot1
179 32 4096 mmcblk0boot0Comprobando partición por partición, esto es lo que me he encontrado en cada una con desensamblador ARM:
(en orden de secuencia de arranque) :
loop0 12166B Aquí hay drivers de muy bajo nivel, poco código descifrable. También me he encontrado cosas de Windows y Microsoft, ni idea que harán ahí:
ROM:00340DF8 aWindowsUpdateS DCW 0x22
ROM:00340DF8 unicode 0, <Windows Update>
ROM:00340DF8 unicode 0, < service is disabled. It has to be enabled for the instal>
ROM:00340DF8 unicode 0, <lation to succeed.>
ROM:00340DF8 DCW 0xA, 0
ROM:00340EB2 ALIGN 0x10
ROM:00340EC4 aRAdditionalI_0 unicode 0, <r additional information please look at the log files %%w>
ROM:00340EC4 unicode 0, <indir%%\windowsupdate.log and %%windir%%\Logs\CBS\CBS.log>preloader 30535680B controla algunas funciones del USB, drivers...
A partir de aquí comienza a arrancar la emmc:
proinfo 7168B lleva el numero de serie del movil. Los chinos y los internacionales cambian en una cifra. lo mas probable es que se pueda cambiar y asi tener un mx5 100% internacional.
nvram 5120B pequeña memoria que almacena el imei y cosas relacionadas con el baseband
devinfo 256B lleva unicamente una cadena en hexadecimal, no sé que puede ser.
rstinfo 20480B una pequeña cabecera de unos pocos bytes y el resto vacío.
protect1 10240B
protect2 10204B No sé muy bien que significan, no he podido descifrar nada. Principalmente están vacías.La dos lleva una zona compuesta por todo unos.
seccfg 256B Comienza por la palabra "AND_SECCFG_V" y luego está lleno de datos indescifrables. Tiene alguna relación con el secure boot parece ser.
lk 384B bootloader, con pequeño fragmento de kernel y algunos drivers como el de la pantalla.
boot 16384B el kernel basicamente.
recovery 20480B
secro 6144B Comienza por "AND_AC_REGION" un cero y codigo indescifrable..
para 3072B vacio
logo 8192B logo de meizu al arranque
custom 524288B bloatware de meizu básicamente, con apps de baidu, alibaba... Sería interesante cambiar el tamaño de esta partición y dársela a la memoria interna. Lo que no estoy seguro es si esta partición tiene la protección anti-cambios del lk
expdb 10240B drivers relacionados con la carga, la carga rápida, controla el cpu durante la carga...
tee1 5120B
tee2 6784B trusted enviroment execution, básicamente hay protocolos de seguridad de android.
system 1572864B systema, la rom del movil.
cache 434176B cache android
userdata 27856384B datos de apps y demás
flashinfo 16384B vacio
sgpt 4096B ceros y unos aleatorios.
Faltan 2 particiones más después, pero no son nada relevantes.
Mi esperanza era encontrar la partición Persist (también llamada frp en otros móviles), oculta en las particiones o con otro nombre, pero no ha sido así. No hay partición Persist.
Esta partición permite el desbloqueo del bootloader en muchos androids a partir de 5.0 ( como el meizu m2, m2 note), y con la estructura del interior del bootloader tenía pinta de que fuera así, pero no es el caso... :rolleyes:
Lo curioso es que en el bootloader (lk) encuentro varias referencias a esta partición, como por ejemplo aquí, donde parece que el frp es un flag del bootloader:
En Metapc
aFrp db 'frp',0También encontré en el bootloader la secuencia de arranque pero no coincide con la del kernel, algo curioso.
Esto dice el lk.bin en arm32:
ROM:00031F1C DCD 0, 0, 0, 0, 0
ROM:00031F44 aPreloader_1 DCB "preloader",0
ROM:00031F4E DCW 0
ROM:00031F50 DCD 0, 0, 0, 0, 0
ROM:00031F64 DCD 0x41E2C150, 0, 0, 0
ROM:00031F74 aProinfo_0 DCB "proinfo",0
ROM:00031F7C DCD 0, 0, 0, 0, 0, 0
ROM:00031F94 aProinfo_1 DCB "proinfo",0
ROM:00031F9C DCD 0, 0, 0, 0, 0, 0
ROM:00031FB4 DCD 0x41E2C150, 1, 0, 0
ROM:00031FC4 aNvram DCB "nvram",0
ROM:00031FCA DCW 0
ROM:00031FCC DCD 0, 0, 0, 0, 0, 0
ROM:00031FE4 aNvram_0 DCB "nvram",0
ROM:00031FEA DCW 0
ROM:00031FEC DCD 0, 0, 0, 0, 0, 0
ROM:00032004 DCD 0x41E2C150, 2, 0, 0
ROM:00032014 aProtect1 DCB "protect1",0
ROM:0003201D DCB 0, 0, 0
ROM:00032020 DCD 0, 0, 0, 0, 0
ROM:00032034 aProtect1_0 DCB "protect1",0
ROM:0003203D DCB 0, 0, 0
ROM:00032040 DCD 0, 0, 0, 0, 0
ROM:00032054 DCD 0x41E2C15C, 3, 0, 0
ROM:00032064 aProtect2 DCB "protect2",0
ROM:0003206D DCB 0, 0, 0
ROM:00032070 DCD 0, 0, 0, 0, 0
ROM:00032084 aProtect2_0 DCB "protect2",0
ROM:0003208D DCB 0, 0, 0
ROM:00032090 DCD 0, 0, 0, 0, 0
ROM:000320A4 DCD 0x41E2C15C, 4, 0, 0
ROM:000320B4 aPersist DCB "persist",0
ROM:000320BC DCD 0, 0, 0, 0, 0, 0
ROM:000320D4 aPersist_0 DCB "persist",0
ROM:000320DC DCD 0, 0, 0, 0, 0, 0
ROM:000320F4 DCD 0x41E2C15C, 5, 0, 0
ROM:00032104 aSeccfg DCB "seccfg",0
ROM:0003210B DCB 0
ROM:0003210C DCD 0, 0, 0, 0, 0, 0
ROM:00032124 aSeccfg_0 DCB "seccfg",0
ROM:0003212B DCB 0
ROM:0003212C DCD 0, 0, 0, 0, 0, 0
ROM:00032144 DCD 0x41E2C150, 6, 0, 0
ROM:00032154 DCD 0x6B6C, 0, 0, 0, 0, 0, 0, 0
ROM:00032174 DCD 0x6B6C, 0, 0, 0, 0, 0, 0, 0
ROM:00032194 DCD 0x41E2C150, 7, 1, 1, 0x746F6F62, 0, 0, 0, 0, 0, 0
ROM:00032194 DCD 0
ROM:000321C4 aBoot_0 DCB "boot",0
ROM:000321C9 DCB 0, 0, 0
ROM:000321CC DCD 0, 0, 0, 0, 0, 0
ROM:000321E4 DCD 0x41E2C150, 8, 1, 1, 0x6F636572, 0x79726576, 0, 0
ROM:000321E4 DCD 0, 0, 0, 0
ROM:00032214 aRecovery_1 DCB "recovery",0
ROM:0003221D DCB 0, 0, 0
ROM:00032220 DCD 0, 0, 0, 0, 0
ROM:00032234 DCD 0x41E2C150, 9, 1, 1, 0x72636573, 0x6F, 0, 0, 0, 0
ROM:00032234 DCD 0, 0
ROM:00032264 aSecro_0 DCB "secro",0
ROM:0003226A DCW 0
ROM:0003226C DCD 0, 0, 0, 0, 0, 0
ROM:00032284 DCD 0x41E2C150, 0xA, 0, 0
ROM:00032294 aPara_0 DCB "para",0
ROM:00032299 DCB 0, 0, 0
ROM:0003229C DCD 0, 0, 0, 0, 0, 0
ROM:000322B4 aPara_1 DCB "para",0
ROM:000322B9 DCB 0, 0, 0
ROM:000322BC DCD 0, 0, 0, 0, 0, 0
ROM:000322D4 DCD 0x41E2C150, 0xB, 0, 0
ROM:000322E4 aLogo_0 DCB "logo",0
ROM:000322E9 DCB 0, 0, 0
ROM:000322EC DCD 0, 0, 0, 0, 0, 0
ROM:00032304 aLogo_1 DCB "logo",0
ROM:00032309 DCB 0, 0, 0
ROM:0003230C DCD 0, 0, 0, 0, 0, 0
ROM:00032324 DCD 0x41E2C150, 0xC, 0, 0
ROM:00032334 aCustom DCB "custom",0
ROM:0003233B DCB 0
ROM:0003233C DCD 0, 0, 0, 0, 0, 0
ROM:00032354 aCustom_0 DCB "custom",0
ROM:0003235B DCB 0
ROM:0003235C DCD 0, 0, 0, 0, 0, 0
ROM:00032374 DCD 0x41E2C15C, 0xD, 0, 0
ROM:00032384 DCD 0x707266, 0, 0, 0, 0, 0, 0, 0
ROM:000323A4 DCD 0x707266, 0, 0, 0, 0, 0, 0, 0
ROM:000323C4 DCD 0x41E2C150, 0xE, 0, 0
ROM:000323D4 aExpdb_0 DCB "expdb",0
ROM:000323DA DCW 0
ROM:000323DC DCD 0, 0, 0, 0, 0, 0
ROM:000323F4 aExpdb_1 DCB "expdb",0
ROM:000323FA DCW 0
ROM:000323FC DCD 0, 0, 0, 0, 0, 0
ROM:00032414 DCD 0x41E2C150, 0xF, 0, 0
ROM:00032424 aSystem DCB "system",0
ROM:0003242B DCB 0
ROM:0003242C DCD 0, 0, 0, 0, 0, 0
ROM:00032444 aSystem_0 DCB "system",0
ROM:0003244B DCB 0
ROM:0003244C DCD 0, 0, 0, 0, 0, 0
ROM:00032464 DCD 0x41E2C15C, 0x10, 1, 1, 0x68636163, 0x65, 0, 0, 0
ROM:00032464 DCD 0, 0, 0
ROM:00032494 aCache DCB "cache",0
ROM:0003249A DCW 0
ROM:0003249C DCD 0, 0, 0, 0, 0, 0
ROM:000324B4 DCD 0x41E2C15C, 0x11, 1, 1, 0x72657375, 0x61746164, 0
ROM:000324B4 DCD 0, 0, 0, 0, 0
ROM:000324E4 aUserdata_0 DCB "userdata",0
ROM:000324ED DCB 0, 0, 0
ROM:000324F0 DCD 0, 0, 0, 0, 0
ROM:00032504 DCD 0x41E2C15C, 0x12, 1, 1, 0x73746E69, 0x64, 0, 0, 0
ROM:00032504 DCD 0, 0, 0
ROM:00032534 aIntsd DCB "intsd",0
ROM:0003253A DCW 0
ROM:0003253C DCD 0, 0, 0, 0, 0, 0
ROM:00032554 DCD 0x41E2C164, 0x13, 0, 0
ROM:00032564 DCD 0x70746F, 0, 0, 0, 0, 0, 0, 0
ROM:00032584 DCD 0x70746F, 0, 0, 0, 0, 0, 0, 0
ROM:000325A4 DCD 0x41E2C150, 0x14, 0, 0
ROM:000325B4 aFlashinfo DCB "flashinfo",0
ROM:000325BE DCW 0
ROM:000325C0 DCD 0, 0, 0, 0, 0
ROM:000325D4 aFlashinfo_0 DCB "flashinfo",0
ROM:000325DE DCW 0Si os fijáis, después de la segunda partición de protect, aparece la partición persist, pero he comprobado que no está, lo que he explicado al principio.
Aquí os dejo el código decompilado del bootloader, por si véis algo que creais que puede servir. Aquí tiene que estar la clave para encontrar algún tipo de vulnerabilidad en el meizu.
Tenéis el código en mi github: https://gist.github.com/iicc1/991706a5fef0174014e1
Sigo investigando todo esto, aunque está todo bastante chungo jeje , iré poniendo lo que vaya viendo interesante aquí y así está más recogido :ok:
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.