3.56 MA-1
---------------------
Este firmware es la primera version del 3.56 custom,
este custom (su parte mas basica) ya estaba preparado desde hace unos 7 u 8 meses, pero no ha sido hasta
ahora cuando he decidido publicarlo.
No tiene nada que ver con el exploit del metldr recientemente publicado, pese a que sea inminente la aparicion
de futuros firmwares superiores, para el que lo quiera probar, aqui esta.
Ante todo agradecimientos:
- Graf_Chokolo, por su gran trabajo.
- A Demonhades, por su testeo, su gran entereza.
- A JaiCrab, por su ayuda.
- A Lara, por hacerme reir un dia.
- A la gente que ha testeado este 3.56 MA-1, muchas gracias.
- A tod@s aquell@s que donaron para un flasher, sin ell@s este firmware no existiria tan avanzado como tal.
- A Varicela por su ayuda desinteresada.
- A B.E ,
- A M.E.M, no olvido y no perdono.
- Tod@s aquell@s que olvido por error, disculparme.
Como primera version, solo lleva las funcionabilidades mas basicas de un custom firmware, que ahora pasare a explicar.
Tambien explicare los cambios que Sony realizo en el 3.56, y como lo que en sus notas de publicacion, lo que se
argumentaba como un simple parche de seguridad no fue solo un parche.
- FUNCIONES
* Soporte PEEK / POKE lv2, usando las SYSCALL tipicas 6 y 7 para compatibilidad con homebrew existente.
* Soporte PEEK / POKE lv1 nativo, usando las SYSCALL 10 y 11 respectivamente. Estas SYSCALL se usan igual
que las del lv2, los devs solo tienen que usarlas como usarian las del lv2 pero afectando al lv1.
* Carga de aplicaciones no firmadas, formato FSELF de forma NATIVA. Es decir, una aplicacion npdrm o normal
en formato valido FSELF funcionara directamente. (sin parcheos de copia de memoria en el lv2).
* Carga de aplicaciones firmadas logicamente, tanto oficiales como firma no oficial valida.
* Soporte de aplicaciones hasta la version 3.56.
* Uso de todas las SYSCALL del sistema, siempre que estas no verifiquen posteriormente product mode, QA, etc.
* No hace falta modificar los PARAM.SFO en el caso de que hipoteticamente se usase una aplicacion que pida
una version superior al 3.56 en el, ya sea npdrm / aplicacion normal / o aplicacion corriendo desde el bdemu.
* Instalacion de PKG Retail y Debug desde la opcion de Install PKG.
* Sistema de opciones en el XMB QA hackeado. Ahora puedes abrir las opciones usando el combo normal sin tener
el flag QA activo ni con un token valido o existente en tu maquina. Cualquier opcion cambiada se conserva
en el registro del sistema de configuracion.
Este sistema de hackeo del QA permite que cualquier SPRX que llame al XMB para chequear esta informacion
reciba la informacion hackeada, como por ejemplo el nas_plugin.sprx, que en el caso de una DEX permitiria
instalar sin necesidad de ningun parche en el de PKG Retail.
Como siempre tener cuidado que se hace con esas opciones, este es el sistema mas seguro para tener el QA, sin
ser QA, ya que no se tiene que modificar la EEPROM en ningun aspecto ni recalcular tokens de ningun tipo.
Aqui tengo que dar gracias a Sony por hacer que la seguridad de su token solo fuera en un byte y no en los que
deberia de ser.
- LV2
* FIX: Parcheo para permitir la carga de aplicaciones en medios (evita error 0x80010009)
* FIX: Parcheo para evitar el chequeo de la version de firmware de la aplicacion contra la version de firmware
guardada en la memoria del lv2 (evita el error 0x80010019)
* FIX: Parcheo para evitar el error 0x8001003C (permite la carga de aplicaciones que pidan internamente mas version que la actual)
* FIX: Parcheo para evitar el error 0x8001003D
* FIX: Parcheo para evitar el error 0x8001003E (usando parche en el hdd y no tener disco introducido)
* FIX: Habilita el uso de todas las SYSCALL, evitando su error generico 0x80010003.
- CAMBIOS EN EL LV2 356:
* FIX: Parcheado un nuevo chequeo de seguridad, que evitaba que en modo updater, se pudiera lanzar una aplicacion
no firmada con la clave minima 0xD (3.56), evitando el error 0x80010009. NOTA: MIRAR NOTA AL FINAL DE ESTE LEEME
* FIX: Se utiliza otro modo para integrar las nuevas SYSCALL 6, 7, 10, 11 en el lv2.
- LV1
* Aņadido soporte para PEEK / POKE NATIVO en el lv1. El metodo utilizado para integrar estas hypercalls nuevas no utiliza
una hypercall ya existente, sino que realmente cualquier hypercall no usada en el sistema es un peek o un poke
dependiendo del caso.
Para interactuar con este PEEK / POKE, usar las SYSCALL de lv2 10 y 11 respectivamente.
* Cambios en la hypercall mmap (114). En el 3.56 Sony introdujo cambios importantes en dicha hypercall para evitar
el uso que se le estaba dando con el mapeo del lv1 al lv2.
Ahora esta hypercall chequea que el argumento clave no haya sido modificado, se chequean los rangos de mapeo
(alguien que entienda de esto se dara cuenta de lo peligroso que es que te mapeen algo critico, y no hablo del lv1),
el codigo de la hypercall esta dividido en trozos en subfunciones para liar el analisis.
En esta version del 3.56 MA esta hypercall no ha sido tocada, pero teniendo el soporte de PEEK / POKE en el lv1
el mapeo ya no es tan necesario.
En una version posterior no se descarta el desproteger dicha hypercall pues no es complicado realmente, solo
que no era necesario para esta version.
* Cambios en la hypercall unmap (115), parecido a la mmap, su codigo repartido entre subfunciones.
* FIX: Aņadidos algunos parches para evitar chequeos de integridad del lv1 / lv0.
* FIX: Aņadidos parches en el SPM y en el DM para habilitar el uso de cualquier servicio. El parche es distinto,
mas pequeņo, que el parche SS existente (este no es ya compatible con el 3.56), en mis testeos mi parche no produce ningun tipo de problema con trofeos, ni partidas guardadas, etc.
* TODO: Eliminar el problema de no poder hacer downgrade a una version inferior al 3.56. Actualmente no es posible
bajar del 3.56 una vez se actualice a el.
- LV0 APPLDR
* FIX: Parche para anular el chequeo de la firma digital ECDSA. Ahora una aplicacion con una firma invalida
sera considerada con firma valida.
Por ejemplo, "firmar" una aplicacion sin tener la clave privada adecuada para generar una firma adecuada.
* FIX: Parche que anula el chequeo del hash de los segmentos de la aplicacion. Un hash invalido sera considerado
valido.
* FIX: Parche para anular el que no se pueda usar los FSELF en consolas retail. Este parche es distinto al que esta
en ps3devwiki, el parche que esta en dicha pagina acerca de este tema brickea las maquinas, tiene un problema
para poder desencriptar la metadata de los ejecutables retail encriptados.
* FIX: Parche para anular la proteccion aņadida en 3.55 (en el caso de las aplicaciones npdrm / normales, antes solo
estaba en la carga del rvk) que evita que se puedan usar aplicaciones de version superior a la indicada en el firmware
actual. Es decir, en un caso hipotetico, un juego 3.60 intentando lanzarse en un 3.56.
* FIX: Parche para anular la proteccion del chequeo del auth de las aplicaciones (aņadida en 3.56), este chequeo
detecta los programas creados con las herramientas publicas ya que siempre ponen el mismo auth, un auth muy superior.
* FIX: Parche que anula la proteccion de la lista blanca de programas autorizados, aņadida en 3.56. Ahora se pueden
usar todas las aplicaciones como 3.55 e inferiores.
- NOTAS
* El lv2 esta protegido mediante un hash en el lv1, en el caso de que se quiera tocar un offset que este englobado
en el rango de proteccion, este chequeo produciria un panico apagando el sistema.
Para evitar este problema, usar la herramienta que va adjunta a este paquete antes de modificar el lv2 usando poke.
El porque de no implementar este parche de forma directa es porque no todo el mundo es dev, y que no se pueda tocar
el lv2 es seguro para el usuario.
Por supuesto el codigo fuente de dicho programa esta incluido, con lo que un dev puede ver como usando el POKE
del lv1 se parchea este problema.
* Ahora mismo se puede entrar en modo servicio, y usar el lv2diag como antes, pero esto tiene un peligro potencial.
El 3.56 actualmente impide que se pueda hacer un downgrade a menos de 3.56, es decir que si estais en este 3.56 en el estais,
si se tiene tiempo se intentara sacar una version que anule ese chequeo del update manager.
El problema resulta en un error de programacion del lv2diag.self que permite actualizar, el fallo resulta que
SIN CHEQUEAR que el update este en el usb ni verificar que este sea valido, el programa formatea las flashes 1,2 y 3.
Es decir que si luego falla, tu sistema estaria parcialmente muerto por no tener flashes, seguiria funcionando
el ros activo pudiendo usar un lv2diag de nuevo, pero quien avisa no es traidor. Cuidado con el lv2diag!
* Adjunto a este paquete va una aplicacion actualizada para extraer los nodos de un dump del lv1, es una actualizacion
de la aplicacion realizada por Graf Chokolo, ahora tiene soporte para las versiones 3.15, 3.41, 3.55 y 3.56 en un solo
programa. Util para ver los nodos extraidos de tu dump.
* El acabado grafico del firmware se aņadira cuando este acabado el 3.41 JFW en si.
* En el paquete aņado una aplicacion, que no creo que exista de forma publica, para poder poner el product mode
desde el XMB directamente, actua como toggle, en el caso de que la podais usar en el modo producto, simplemente
os quitara el modo producto.
Como nota final recordar que es la primera version de este firmware, asi que criticas constructivas bienvenidas son.
Como supongo que a raiz de esta publicacion en donde se ven los parches del appldr, muchas variantes saldran de el,
solo recordar que la primera publica fue esta.
No mordais la mano que os da de comer, hoy es el 3.56 igual maņana es uno superior, o igual no,