Para quien se pregunta cual es el aporte, no es archivos ni soluciones completas para el usuario final, sino información para darles un empujoncito y facilitarles la tarea a los desarrolladores que están intentando hacer los nuevos CFW.
Dejo mi traduccion hecha a mano, como está dirigida a desarrolladores no tiene sentido que traduzca los términos técnicos, si no sabes lo que es un flag o un offset, o si no estás familiarizado con la seguridad de PS3, entonces este info no es para tí :
Ya que las claves LV0 se han filtrado, creo que ahora podemos compartir con ustedes esta información, para ayudar a aquellos que estan intentando construir su propio Custom Firmware 4.x :
La firma NPDRM ECDSA al pié del SELF es comprobada por lv2. Primero pregunta al appldr para que le diga si la firma será comprobada o no, y appldr solo pondrá el flag si el SELF es un NPDRM de revisión 3.56+ (los sin claves privadas). Esto significa que los archivos SELF firmados con las nuevas claves 3.56+ aún no tienen su ECDSA comprobado (probablemente para agilizar la caga de archivos).
Si el appldr dice dice que la firma ECDSA debe ser comprobada, entonces el lv2 la verificará por si mismo, y devolverá un error si no es correcta. Hay muchas formas de parchar esta comprobación.
1 - Parchando la comprobación de la revisión de la clave en appldr.
2 - Parchando el "poner flag a 1" en appldr si la revisión de la clave es inferior a 0xB.
3 - Parchando en lv2 el código que almacena los resultados del appldr.
4 - Parchando la función actual que compruaba las firmas en lv2.
5 - Ignorando el resultado de ECDSA de lv2.
Aqui hay uno de los parches (el cuarto, parchar la funcion de comprobación desde lv2) :
En memoria 0x800000000005A2A8, la cual corresponde al offset 0x6a2a8 en lv2_kernel.elf, reemplazar :
E9 22 99 90 7C 08 02 a6
con :
38 60 00 00 4E 80 00 20
esto es para el kernel 4.21 (ese era el último cuando estaba investigando esto), dejaré esto como ejercicio para que el lector encuentre los offsets correctos para los archivos del kernel 4.25 y el próximo 4.30.
Y aquí hay una pequeña porción mas de información... en el lv2 del 4.21, en la dirección de memoria 0x800000000005AA98 (puedes imaginarte por ti mismo el offset del archivo), ahí es donde el lv2 carga el resultado "check_signature_flag" del appldr, así que si quieres implementar el método 3 de lo de arriba, solo reemplaza el "Id %r0, flag_resultante_de_appldr" por "Id %r0, 0" y tendrás otro método para parcharlo. Ambas soluciones deberían funcionar de igual manera.
Disfruta la vuelta del código casero en CFW 4.x
PS: Gracias a flatz y glu0n que ayudaron a reversear esta pequeña cantidad de información.