En las antiguas PreIPL se comprobaba la firma de la IPL a cargar, pero se descubrió un exploit en la PreIPL que permitía engañarle para hacerle cargar cualquier IPL, lo que dió lugar a la instalación de un CFW en las PSPs (que tienen una IPL sin firmar).
La nueva PreIPL (la causante principal de que las placas sean malditas) al parecer hace una comprobación añadida. La IPL que carga la PreIPL viene en cachitos de 4 KB cada uno, y al final de cada cachito había unos bytes que al parecer no importaban mucho antes. Podías poner cualquier valor y la PreIPL antigua se lo tragaba igual. Pero ahora resulta que en las nuevas esos bytes sí que importan. Parece ser que son en función de cada bloque (es decir, que varían si el bloque de datos varía), lo que viene a ser un hash. Lo que no se ha logrado descifrar es qué función en concreto calcula este hash
******************
Por ejemplo: yo tengo unos datos tal que:
blablablablablabla
con un hash:
6bla
Si yo cambio los datos a:
blebleblebleagur
veré que el hash cambia a:
4ble1agur
Aquí está claro cómo calculamos el hash a partir de los datos. El problema es averiguar cómo lo hace la PreIPL con la IPL.
¿Y qué obtendríamos en caso de llegar a obtener el código de la PreIPL? Pues averiguar cómo exactamente, con qué código específico, hace dicha comprobación, con lo cual habrían dos posibilidades:
Conseguimos hacer una "inversa" de la función de comprobación del hash y por tanto podemos calcular el hash de cualquier bloque de datos, con lo que podremos crear una hash válido para cualquier IPL que queramos. Caso muy poco probable ya que las funciones de hash están concebidas matemáticamente para ser muy muy muy complicadas de invertir.
Se encuentra un fallo de software en la comprobación del hash, con lo que eventualmente podríamos engañar a la PreIPL (un exploit de PreIPL, vamos).