Hermes escribió:Bueno, la que se ha armado
Me gustaría hacer unos comentarios, al hilo de lo que se está formando, quizá un poco offtopic en algunas partes y probablemente, post largo
El tema es que quizá alguien recuerde mi paso por estos foros hace tiempo, cuando hice el cargador homebrew de PS2 para PS3 y también en el corto periodo que tuvimos aceleración 3D en Linux. Después de eso, me desanimé y anduve a rachas por otros lares, entre ellas, la Wii. Y casi no recuerdo nada de PS3, aunque pueda parecer raro y todo esto me pilla mucho menos puesto que otros.
En todo este tiempo, estoy en una especie de retiro del veterano, que aparece en momentos puntuales durante un periodo y luego pasa a la fase baja, en este caso, añadid la desmotivación por mi situación laboral (estoy en paro desde hace muy largo tiempo y sin ingresos desde hace meses), aunque eso hace también que de alguna forma, pueda mirar las cosas de otra manera y quizá dedicar un tiempo a las cosas que de otra forma no dispondría.
El tema es que por ejemplo, yo no conozco el código ensamblador del PPC como un experto, por ejemplo, aunque que duda cabe que viendo las instrucciones, uno se puede imaginar que significan o como trabajan viendo parte del código (es algo que ocurre cuando ya se ha tocado distintos códigos de ensamblador, que sin saber, sabes cosas
) y evidentemente, uno tiene buenas ideas y aprovechar lo que ya va viendo de otros y asimilar rápido cosas que desconocías ayer, desconoces hoy y aun así... trabajas con ello
Por ejemplo, el tema de las MCU USB estas, hasta el viernes pasado, no tenía una operativa y nunca he trabajado con ellas, de forma similar a cuando en tiempos de PS2, yo no tenía ni idea de la existencia de MCU como el PIC 12c508 o 16F84 y algunos ya sabéis lo que armé con ellos (y tampoco tenía ni idea de trabajar con herramientas para PS2 o con las de Wii, pero todo se aprende con voluntad, aunque se olvida con facilidad
)
Dicho esto, entremos en cuestiones mas serias:
El código fue desensamblado desde la última versión del payload de psgroove (pille tal cual la cadena, cree un pequeño programa para escribirlo en un fichero binario y de ahí listo para desensamblar y trabajar con el.
Hay que decir que las macros que proporcionaba el código de AerialX (que ya comente que no me funcionaba y se quedaba en negro), son muy útiles para reubicar código, pero para empezar, quedaba la cuestión de conocer el lugar exacto de salto para llamar algunas funciones.
Yo no tengo dump de memoria de PS3 que me pueda aclarar la cuestión y mucho menos del firm 3.41, pero la cosa trabaja de la siguiente forma:
- Hay una series de funciones que son llamadas utilizando saltos relativos, en la memoria del kernel. Esa es una de las razones por la que el código no funciona en un firmware inferior, pues seguramente, estén descolocados los saltos.
Por ejemplo, se llama asi a funciones como memcpy o memset, dado que disponemos de un margen muy reducido para meter código y hay que aprovechar lo que se encuentra ya servido.
Las funciones "peek" y "poke", deben estar operativas, se supone
Otra de las cosas curiosas que hace el código y que puede ser la razón de los problemas que comentáis con algunos dispositivos USB, es que se llama a una función interesante, que registra un módulo para comunicarse con el dispositivo e indicarle que el exploit fue bien (esa parte se puede anular, pero entonces no tienes la confirmación de que todo ha ido bien y de hecho, quedan huellas en psgroove.c de que estuve mirando eso
)
Adaptarlo a otro kernel, lo veo dificil si no se dispone de los medios apropiados, pues obviamente, esto se apoya demasiado en el propio código del kernel y es la pescadilla que se muerde la cola.
Por otro lado, el tema de los loader, el problema es que evidentemente, hay que usar el SDK de SONY y cuando no haga falta ese SDK, será por que alguien lo reversó
Yo no voy a hacer hincapié en ello, pero mas allá de moralidades e hipocresías (a nivel mundial
), lo cierto es que hay que ser valiente para tentar al diablo
En mi caso, puedo decir que veo difícil meter un soporte NTFS, salvo que se intervenga de alguna forma en los dispositivos (hace falta poder registrar uno y cuando digo eso, me refiero a registrar algo que reciba los open, close, read, seek, etc, no a un driver USB, de forma que resida en memoria durante el funcionamiento del juego. No significa que no sea posible, pero trabajo llevará entenderlo todo)
De todas formas, siendo prácticos yo creo que es mejor opción añadir un mecanismo que permita salvar las restricciones de FAT 32, al menos para el copiado entre dispositivos: tal vez partir los ficheros en fragmentos mas cortos y añadirles una extensión especial, con el fin de luego poder reagruparlo en el HDD interno.
Esa debería ser una prioridad en un cargador, aunque cierto es que los juegos así partidos, no funcionaría en una unidad externa.
En todo caso, hay cosas para las que habrá que dejar pasar el tiempo e ir dejando a la peña que aporten su grano de arena: a mi no me gusta que por ejemplo, la gente cierre el código de las cosas por que si o ponga obstáculos a otros, de alguna forma: esa era una de las razones de desensamblar y preparar las cosas así, para que cualquiera pueda ver y compilar el código por su cuenta.
Saludos y siento el tocho
.