Desamblando software

Viendo lo poco que avanza la Scene en estos temas, y viendo que todos los problemas radican en no poseer el codigo original de los firmwares (obviamente si se supieran, seria codigo abierto, y todo dios tendria scene... :Ð ), me pregunto si no es posible desamblar los firms o el software cerrado, y analizarlo minuciosamente.Me explico para el q no lo entienda:


Ensamblador en un lenguaje de bajo nivel, aunque mas q un lenguaje es una "mejora" del propio codigo binario, donde los comandos son instrucciones directas a la CPU.Aqui no puedes crear un "while" ni un "for", sino que tienes que decirle exactamente a la CPU que es lo q ha de hacer, a traves de sencillos comandos del tipo "move 5 to 19" (no es exactamente asi, yo no se ensamblador, si lo supiera no estaria aqui :D ), y ni siquiera es necesario de compilar, sino de traducir esos comandos a sus equivalentes binarios.

Cualquier achivo ejecutable o binario se puede desamblar, y ver su "codigo" en ensamblador.Es un "lenguaje" muy complejo y abstracto, pero para algo estan los ingenieros de lenguajes de bajo nivel...

De hecho, las empresas antivirus lo hacen todos los dias con decenas de virus, y nadie se extraña.Como creeis entonces que pueden saber que tal virus se activará el 6 de enero, o el 8 de septiembre?Porq lo ven en su "codigo".Es decir, ven lo q el binario ejecuta en la CPU, y a traves de ahi se sacan conclusiones.

Vale, estas empresas tienen todo un equipo de expertos trabajando en ello, pero la mayioría no tardan mas de 2 horas en saber el funcionamiento de cada virus y de crear la vacuna para poder detectarlo y eliminarlo.

Asi se crean tambien los famosos "cracks" o parches para juegos de PC, modificando la parte donde se supone que esta la proteccion y "parcheandolo" para que se la salte.

Yo me pregunto...no es posible crear una especie de "crack", parcheando el firmware q da problemas, para q se salte la proteccion?No hay nadie en la scene q sepa ensamblador, y tenga el tiempo suficiente para analizar detenidamente la libreria en cuestion q se encarga de ejecutar codigo en la PSP?Sabiendo ademas q la PSP usa una CPU generica bastante comun en PDAs y demás, no creo q sea una tarea imposible.Mas dificil lo tienen las compañias antivirus, q tienen q desamblar constantemente virus protegidos y encriptados de las formas mas enrevesadas para evitar ser descubiertos por estas...y no he visto q ningun virus sea "indetectable" por los antivirus o ineliminable...


Vamos, creo yo q lo q digo es posible.Gracias a este lenguaje de bajo nivel, en cualquier ejecutable se puede ver su "interior".

De hecho, incluso hay "descompiladores" funcionales, q si bien no dejan el codigo tal como esta en un principio (cosa q es imposible), al menos generan a partir de los binarios, un codigo estructurado. En clase hemos usado algunos, q vale, a veces no se entiende una mierda porq los nombres de las variables se las "inventa" el programa, pero le da a uno una idea de lo q hace el programa.


Q conste q yo estoy aprendiendo c++ en el instituto, pero aun no he pasado del modo texto, y aun estoy con el while, el for y demás, pero no sé, creo q lo q digo es posible.No creo q los firmware actuales sean barreras infranqueables con esta manera. Cosas mas dificiles se han logrado, como crackear StarForce3 y demás...
Archnemon escribió:Yo me pregunto...no es posible crear una especie de "crack", parcheando el firmware q da problemas, para q se salte la proteccion?


si es posible, de hecho con mi 1.5 hace mucho tiempo aplicaba unos parches de un par de bytes a ciertas comprobaciones del kernel que impedian cargar modulos desencriptados (o desde la memory stick) en modo usuario.
Y es asi como lo hacia tb el hookloader y otros cargadores.

Archnemon escribió:No hay nadie en la scene q sepa ensamblador, y tenga el tiempo suficiente para analizar detenidamente la libreria en cuestion q se encarga de ejecutar codigo en la PSP?Sabiendo ademas q la PSP usa una CPU generica bastante comun en PDAs y demás, no creo q sea una tarea imposible.


te aseguro que la el 70% de la gente activa de la scene tiene buen nivel como para reversar codigo, lo que pasa es que una tarea tremenda, es lento, avanzas a razon de 1 o dos funciones al dia (mas todo el tiempo de investigacion, etc).

por ejemplo Florin Sasu reverso el kernel completo de la PS2 y lo reescribio, fue una tarea monumental (y muy poco reconocida), Sasu es una de las personas que mas ha avanzado en el tema ingenieria inversa/decompilacion, tuve la suerte de que me mandara un PDF con su tesis que trataba sobre este tema, y esto de la decompilacion es 100% factible, pero requiere de cantidades inimaginables de tiempo para llegar a buenos resultados.

Sin ir mas lejos, CASI TODOS los logros de la scene son resultados de la ingenieria inversa (excepto avances gracias a sources y documentos filtrados).

Archnemon escribió:Mas dificil lo tienen las compañias antivirus, q tienen q desamblar constantemente virus protegidos y encriptados de las formas mas enrevesadas para evitar ser descubiertos por estas...y no he visto q ningun virus sea "indetectable" por los antivirus o ineliminable...


yo creo lo contrario, que lo tienen mucho mas facil, porque tienen recurso, no lo hacen como hobby, ademas los virus son muy pequeños por lo general.


saludos
Tambien hay una cosa que se llama encriptacion que dificulta bastante las cosas
creo que lo que suelen hacer tambien los de antivirus es apañar el codigo y buscar en hexadecimal binario o en lo que gusten, cadenas ya conocidas o que se parezcan a algo que ya conocen, por lo tanto su trabajo en algunos casos no resulta tan "mortal de investigacion" sino tambien de paciencia y como decia djhuevo,el codigo no suele ser tan largo.

Pero lo que atañe al caso hay que recordar que no solo seria buscar cadenas a partir de algo ya conocido, se parte de una base no conocida (si supieramos de que consta el firm [beer] ) y con el problema añadido que recordo papixulo de encriptacion, que ya nos deja enel trabajo a realizar en algo todavia un poquito mas dificil
Hombre, revertir todo el Firmare de PSP es una locura, pero si sabemos que el problema está en una libreria de 120ks, iempre se podría hacer...

Es q sino, andamos a ciegas [+risas]

O eso, o a programarse un Firmware nuevo.De hecho, ya se ha planteado la idea de tener dos Firmwares en una PSP, uno dedicado a la carga de homebrew, y otro para el uso "normal".Eso sí, los backups no se podrían rular.Pero menos da una piedra...o una PSP 2.5 [poraki]


De todas formas, en PSP no se puede hacer algo tipo el FlashMe de NDS?Parchear el Firmware para que al arrancar, si se mantiene pulsado tal botón, arranque automáticamente un archivo determinado, y sino, pase al sistema normal?Así se podría crear un "eboot loader" que arrancase nada más encender la PSP, y si quisiésemos pasar al sistema original, soltábamos el botón.
[burla2] mama salgo en un hilo de gente super lista

soy uno de ellos [chulito]

Bromas a parte mira k sere kazurro ke no he entendido nada del hilo

Me da envidia sana gente ke habla de estos temas kon razocinio y konocimiento

saludos a los ke habeis posteao aki [chulito]
en el insti lo que te estaran enseñando es c, porque el c++ es programacion orientada a objetos, primero tienes que saber c claro. XD
hola123456 escribió:en el insti lo que te estaran enseñando es c, porque el c++ es programacion orientada a objetos, primero tienes que saber c claro. XD


[MODE=Offtopic del copón]
Hombre, para programar programas simples con for y while no creo que halla ningún problema XD
[/MODE]

En cuanto al tema del hilo, como bien han dicho el trabajo de la programación inversa es muy complicado, y más si encima sony se encarga de dificultar la labor (vease encriptación).

PD: Aunque aún así tiempo al tiempo...
¿Se sabe suficiente del hardware de la psp como para que sea más o menos factible el crear un firmware casero? No digo un firmware realmente usable, simplemente si sería posible construir algo desde cero sin basarse en un firm de sony.
papixulooo escribió:Tambien hay una cosa que se llama encriptacion que dificulta bastante las cosas


BRoLy_KReT escribió:y más si encima sony se encarga de dificultar la labor (vease encriptación).


generalmente es asi, pero no ha sido la tonica en PSP, nunca fue un problema, desde los primeros homebrews (lease hello world de nem), hasta los actuales (ahora hasta puedes desencriptar de forma mas elegante).

saludos
Muy interesante el post.
Si, la scene está compuesta de genete que realmente domina el tema de lenguajes ensambladores.

Saludos.

PD: QUe buen post
Archnemon escribió:Hombre, revertir todo el Firmare de PSP es una locura, pero si sabemos que el problema está en una libreria de 120ks, iempre se podría hacer...


Tienes la minima idea de lo que son 120K de codigo o la cantidad de lineas de codigo que pueden producir 120K binarios desensamblados???
Solo de pensarlo me tiemblan las piernas [mad]
desamblator group, lo suyo seria crear un grupo de investigacion empezando quizas por uno de los puntos mas faciles las librerias y repartirse el trabajo, por que es un trabajo muy grande y que requiere mucho tiempo para una persona pero si se hiciera con muchas ayudaria mucho, por que ya sabéis que contra mas ojos miran mas ojos ven jeje yo creo que tendriamos que atacar todos empezando por las librerias, o el umd emulator y crear una base de carga de librerias, esperemos que en un hilo como este salga algo bueno ojala, un saludo y buen hilo [oki]
Esto de organizarse y desemsamblar el firmware suena muy bonito pero harían falta cientos de personas trabajando incansablemente para conseguirlo. Vamos, algo así como la secuenciación del genoma humano.

Aún me acuerdo de aquellos tiempos en los que me dejaba caer por clase en la uni y de la cantidad de líneas de ensamblador que había que escribir para que un programa realizase una multiplicación con decimales. Juar!

Mas bien creo que la solución a "nuestros males" pasaría por una filtración de documentación por parte de alguien en $ony. Cosa poco probable de todas maneras...
13 respuestas