Hermes escribió:Mathieulh tiene mucha razón en lo que dice.
Además, lo que yo he estado mirando, aunque no parchea la syscall, cuando te saltas la comprobación, identifica como Model 0x1 y sub model 0x1, saltándote otros checkeos e historias. No tengo ni idea como se verá eso de cara a la store.
Tambien lo he puesto como Model 0x81 (tool) y Model 0x82 (debug) ambas con funcionamiento Online, pero... es peligroso.
Así que lo que voy a hacer, es dejaros a vosotros la papeleta: tenéis la syscall 0x363 si queréis trabajar y si queréis investigar, ésta es la rutina en vsh.elf que estaba mirando:
Este parche funciona, pero creo que trabaja como Model y Submodel 0x1. Se salta una serie de rutinas que no tengo ni idea para que sirven y simplemente, es un parche para comprobar que funciona.
PATCH_INST(0x4712C4, li %r3, 0x0)
PATCH_INST(0x4712C8, blr)
Este mas "sofisticado" pone los datos de la reftool, saltandose todas las rutinas que mencionaba. Aqui se puede ver que realmente, el checkeo se hace fuera de aquí (basta poner 0x85 para la europea, para ver que pide actualizar)
PATCH_INST(0x4712C4, li %r4, 0x81)
PATCH_INST(0x4712C8, sth %r4, 0x2F0(%r3))
PATCH_INST(0x4712CC, li %r4, 0x9 )
PATCH_INST(0x4712D0, sth %r4, 0x2F2(%r3))
PATCH_INST(0x4712D4, li %r3, 0x0)
PATCH_INST(0x4712D8, blr)
Este pondría los datos de la reftool, pero no se salta las rutinas que menciono. De hecho, ha sido el primero que he probado funcionando y como veis, es muy corto:
PATCH_INST(0x471304, li %r0, 0x81)
PATCH_INST(0x471300, li %r9, 0x9)
Estos parches van en "memory_patch_table_1", pero no pongáis todos juntos: son alternativas de uso.
Ya advierto que esto tiene peligro, que es experimental, que os puede servir como punto de partida para averiguar cual ese le punto preciso y que yo no me hago responsable de nada. Lo dejo aquí por si alguien quiere estudiarlo, por que yo no lo voy a usar.
Si alguien tiene interés en mirarlo, necesita extraer los módulos en el arranque con el payload especial que hizo kakaroto, usando cable ethernet, Wireshark para capturar y luego convirtiendo los paquetes con la utilidad de kakaroto. vsh.elf mide 6789 KB y como detalle, al pasarlo por el IDA pro, las direcciones se desplazan en 0x10000 (es decir, si ves la dirección 0x481304 para parchear será 0x471304).
Tened en cuenta otra cosa: lo mas probable es que el chequeo "bueno" se produzca en un módulo y no en vsh.elf.
Yo lo dejo aquí y no quiero saber nada de éste asunto y allá vosotros si queréis jugaros el tipo
Saludos y suerte