PS4Hacked.PNG

Pues si, aunque no lo que la gente se espera.

Por lo visto, y esto ya lo sabréis muchos, PS4 ha sido pirateada… ¿En masa? No, aprovechando un fallo de seguridad de un firmware del 2016 y por tanto de hace más de 12 meses, pero el caso es que con ese firmware la violación ha sido completa.

El hack solo trabaja en consolas que corran el firmware 4.05. El firmware 4.05 es del año 2016 y fue parcheado con el firmware 4.06 (lanzado en Noviembre de ese año).

Pero lo interesante viene ahora:

Junto a los intentos de siempre de instalar copias piratas de los juegos de PS4, los desarroladores han realizado habilmente ingeniería inversa sobre los clásicos de PS2 para PS4, resultando en un wrapper instalable que los usuarios pueden utilizar para colocar casi cualquier juego de PS2 (asumiendo que haya un archivo ISO pare el título). Lo que lleva a una dramaticamente más grande linea de juegos de PS2 jugables por retrocompatibilidad que las oferta oficial de Sony en la tienda.

Un Wrapper es un interprete, es un programa que coge el código binario de una plataforma y lo traslada para que otra pueda entenderlo, obviamente el tiempo de traducción es un peso pero con la diferencia de potencia entre PlayStation 2 y PlayStation 4 no hay problema para que el tiempo de traducción y ejecución sea el mismo que el de ejecución de la consola original, en todo caso hemos de tener en cuenta que PS4 tiene unos 6 núcleos de la CPU disponibles en total, contando lo que es el entramado de la CPU de PS2, el Emotion Engine, esto son 3 núcleos pero existe una complicación adicional. En primer lugar tanto las VUs como el MIPS R5900 de PS2 tienen un conjunto de registros e instrucciones distinto por lo que el binario en los dos casos es distinto.  En segundo lugar est lo que es la unidad más importante de PS2 a la hora de desarrollar… ¿El Emotion Engine? ¿El Graphics Synthetizer? Se trata de una pieza del Emotion Engine que es la unidad DMA que es la encargada de la comunicación directa entre los diferentes procesadores y de estos con la memoria principal.

tema 3e dib01

¿Sería la unidad DMA controlada por otro procesador de los Jaguar en su defecto se hace a través del UNB del SoC Liverpool de PS4?

PS4SocMemory

En PS4 hay unos dos Northbridge, uno para memoria coherente y el otro para memoria no-coherente (HUB en el diagrama), siendo el segundo exclusivo del pipeline de renderizado de la GPU y es donde se forma la imagen final. Aunque en este caso el trabajo de la GPU de PS4 será muy leve, aunque luego entrare a eso. El tema esta en que la unidad DMA no es necesaria emularla desde el momento en que el UNB trabaja para ello de manera inmediata, pero lo que necesitamos es un director de orquestra que lea el código de PS2, lo vaya interpretando y vaya enviando en forma de trabajo el código al resto de los núcleos Jaguar:

  • MIPS R5900+VU0: 1 núcleo.
  • VU1: 1 núcleo
  • SPU2 (Audio): 1 núcleo.
  • Interprete: 1 núcleo.

Por lo que se puede hacer todo en un solo módulo Jaguar, dejando dos núcleos libres.

En los juegos de PS2 el renderizado de la escena funciona de la siguiente manera en el EE:

  1. La etapa de calcular donde esta cada objeto y sus reacciones, detección de colisiones, es algo para lo que se utiliza habitualmente el R5900+VU0 en la gran mayoría de juegos.
  2. La segunda etapa que es la etapa geométrica es realizada en el VU1, pero esa geometría no es de acorde con el pipeline OpenGL y directamente por software. ¿Tiene suficiente potencia un núcleo Jaguar para hacer el trabajo del VU1 de PS2 y de sobras? Yo personalmente creo que si.
  3. La tercera etapa es el rasterizado y texturización de la escena, de eso se encargaría la GPU de PS4.

Pero hay unos pocos en los que:

  1. La etapa de calcular donde esta cada objeto y sus reacciones, detección de colisiones se hace en el R5900 exclusivamente.
  2. Se divide la etapa geométrica en dos etapas, una realizada por el VU0 y la otra por el VU1 para aumentar la tasa de polígonos generada.
  3. La tercera etapa es el rasterizado y texturización de la escena, de eso se encargaría la GPU de PS4.

Todo depende de si colocamos el VU0 en modo micro (independiente) o macro (co-procesador del R5900). Ambos tipos deberían ser perfectamente posibles en PS4 sin problemas pero… ¿Y que hay de la etapa de rasterizado en la GPU? Simplemente enviamos la geometría no rasterizada a la GPU pero desactivamente las etapas de la GPU previas al rasterizado para que lo aplique directamente, realice el filtrado de texturas correspondiente, realice el blending entre texturas y componga la imagen final. PS2 no utilizaba Pixel/Fragment Shaders sino que utilizaba los llamados Register Combiners que es el hecho de coger sumar o multiplicar un mapa de texturas por otro, la tasa de relleno de PS4 y el uso de esta técnica a la GPU le resulta tan poco pesado que lo puede hacer sin cuasi esforzarse.

Eso si, PS2 no utilizaba ninguna API general conocida por lo que lo más seguro es que el inteprete lo que haga sea trasladar el código para el GS de tal manera que la GPU de AMD lo pueda entender facilmente. En todo caso esto ya era algo que se encontraba de manera oficial en el Sistema Operativo de PS4 desde el momento en que hemos visto de manera oficial juegos de PS2 en descarga digital para PS4. Sony parece que desde PS3 coloca via software la compatibilidad con los juegos de dos generaciones atrás… ¿Entonces como es que Sony no le ha dado tanto bombo? Pues debe ser por lo que dijo Andrew Ryan el año pasado:

«Cuando mojamos con la compatibilidad hacía atrás, puedo decir es una de esas carácteristicas que se piden mucho, pero no se utilizan mucho» dice Ryan «Eso, y que estuve en un evento de Gran Turismo recientemente donde ellos tenían los juegos de PS1, PS2, PS3 y PS4, y los juegos de PS1 y PS2, se veían entiguos… ¿quien jugaría a eso?»

Ryan fue muy criticado por esto, pero es verdad y lo mismo se puede aplicar a cualquier otra plataforma… ¿Que valor tienen los juegos de Xbox respecto a los de Xbox 360 en Xbox One? La gente esta pidiendo una retrocompatibilidad con PS3 que nunca llegará en PS4 por la extraña naturaleza de PS3 que dificulta enormemente su emulación sin tener una CPU igual de potente. En realidad no se, y lo digo completamente en serio, que es lo que lleva a Microsoft a llevar a los juego de la Xbox original en Xbox One en vez de rehacerlos, porque si algo necesitan como el comer los juegos de PS2 y los de PSone no es que los puedas jugar en su definicion de antaño sino que estén rehechos, lastima que cosas como el Shadow of the Colossus remaster vaya a pasar con mucha más pena que gloría por ejemplo.

Pero claro, tanto remaster a PS3…  Pero yo no pido un remaster, yo pido lo que es un remake, el rehacer el juego aprovechando la tecnología actual para que la grandeza de los mismos pueda ser observada sin que el aspecto desfasado del juego sea un impedimiento, luego hablaremos si queréis de la opinión subjetiva de cada juego.

¿Y que hay de la piratería?

Es decir, lo que han conseguido es que podamos colocar copías piratas en forma de falsos .pkg que es el formato en el están empaquetadas los juegos de PS4. El propio SDK de la consola lo deja bien claro:

PS4PKG

Los .pkg generados son para la distribución digital del contenido mientras que las ISOs son para el BluRay, por lo que de cada juego hay dos SKUs distintas, una para lo que es la distribución física y la otra la digital. Hay que tener en cuenta que los .pkg generados en el SDK oficial no son para ejecutarse en una PS4 estándar sino en:

ps4devkit

Los .pkg son creados para el debug kit de la consola, no para uso comercial y se han de enviar a Sony para que apliquen el empaquetado o la ISO final haciendo uso de la llave maestra que tienen. Pero… ¿Como es que los hackers han podido reventar dicha seguridad en la 4.05? Pues a través de un Kernel Exploit, es decir, el hecho de poder tomar control del kernel para ejecutar software del que no tendría que tener permiso las PS4 estándar para ejecutarlo. Dicho de manera coloquial, en realidad con esto estamos haciendo que los .pkg para debug kit de la consola sean ejecutables en los modelos comerciales.

¿Lo más potente de todo? Si miráis en la imagen de arriba veréis un detalle que es muy importante para mi y es el hecho de poder realizar un .pkg modificable y por tanto al que se le pueden añadir archivos adicionales uno por uno o cambiar los ya existentes. ¿Por qué eso es importante? Pues porque da la entrada a mods en los juegos y también cheats. Pensad que el .pkg se puede desmontar como ocurre habitualmente en todas las aplicaciones basadas en un SO Unix (siendo el FreeBSD de PS4 un ejemplo de ello, también Mac OS X) o en uno parecido a Unix como es Linux. Por lo que nos podemos encontrar con versiones distintas de un mismo juego funcionando por la red o quien sabe si en el caso de que Sony eche fuere a la gente con una consola pirateada del juego online en el PSN pues… Que existan otros servidores alternativos. Pero con la enorme cantidad de juegos basados en el Pay to Win que están saliendo, las versiones modificadas con todo desbloqueado o con extras pueden estar dando vueltas en la red y aparecer en medio de las partidas jodiendo a la comunidad que ha comprado el juego y se ha gastado tiempo y dinero en conseguir las mejoras para su personaje o ciertas ventajas para el juego.

Ahora bien… ¿Como ha ocurrido esto? Pues porque Sony en realidad no es una empresa especializada en hacer Sistemas Operativos de manera profesional, no tiene las competencias de una Google, de una Apple, de una Microsoft. Lo que ha hecho durante años es utilizar FreeBSD como sistema operativo de su consola porque la licencia BSD les permite modificar el código del SO a sus necesidades por un lado y por el otro no tienen que publicar los cambios realizados pero Sony no tiene experiencia en hacer un SO desde cero. Es decir, del código del SO de PS4 en Sony no deben conocer ni el 90% del mismo.

panic460

Cuando alguien descubre un exploit rapidamente lo que acaba ocurriendo es que Sony ha de ir a buscar la parte del SO que es explotada por ese exploit y modifcarla sin afectar al resto del rendimiento del SO. Suena chocante pero es así, Sony desconoce buena parte del SO de PS4.

¿Y que hay de las aplicaciones que tenemos en PS4?

5AUxRCgJFUmDPRMoJsMo8S.jpg

La mayoría son aplicaciones webkit que corren en ese mismo motor y no son nativas de BSD, es más, la propia interfaz de la consola es una aplicación webkit en si misma. En realidad Sony nunca y repito nunca ha creado una API general para la creación de aplicaciones no-jugables con interfaz gráfica común de como si de un ordenador se tratara. Pero claro, tanto Xbox One como PS4 hacen uso del mismo UNB en sus SoC, exactamente del mismo, lo que provoca un punto en común entre ambos sistemas que es el siguiente:

  • Ambos Sistemas tienen reservado 2 núcleos Jaguar para el SO.
  • Ambos Sistemas reservan unos 3GB para lo que no es el juego que se esta ejecutando.

En el caso de Xbox One tenemos una versión semi-completa de Windows como es Windows RT que es llamada Shared OS en el caso de la consola de Microsoft.

xboxos

Por lo que en Xbox One en esa partición de 3GB podemos crear aplicaciones no-jugables…

devkit-activation-2.png

Sony no tiene nada de eso porque sus competencias en cuanto SOs son muy inferiores a las de Microsoft, no son una empresa que gane dinero haciendo Sistemas Operativos sino electrónica de consumo y por tanto no han desarrollado internamente los procesos para hacer uno y para lo que es PS4 no necesitan nada más potente. Es más, son muy pero que muy conscientes que Microsoft esta en el mercado porque ellos amenazaron en disruptar el PC durante varios años.

ps201_06

Pero ahora con Google siendo una amenaza para Microsoft mucho más grande que cualquier cosa que pueda hacer Sony y con el hecho de que Sony no tiene ya el interés de antaño pues… Sony no ha lanzado nada en ese sentido, aparte que Linux personalmente es un Sistema Operativo que…

thumsdown

Pero sobre eso ya hablare en su momento, porque sería salirme demasiado del tema y creo que con esto es suficiente.