Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: T3TR@TR35 en 13 Julio 2018, 09:24 am



Título: Interprete de ensamblador a C
Publicado por: T3TR@TR35 en 13 Julio 2018, 09:24 am
Buenas, esta vez los molesto porque quisiera saber si hay algun programa o medio para traducir de lenguaje ensamblador a lenguaje C.
Voy a bajarme el kernel de un SO y quisiera examinarlo.
P.D.: es posible, luego de convertirlo a C, pasarlo a hexadecimal para poderlo convertir a ASCII?
Se que es algo complejo o lioso, cualquier ayuda esta mas que bienvenida.
Gracias :D


Título: Re: Interprete de ensamblador a C
Publicado por: CalgaryCorpus en 13 Julio 2018, 17:57 pm
No existe algo asi, o si existe algo que se aproxime, no genera algo util.

Por que no partir por el codigo fuente directamente, si es que es linux lo que intentas modificar?

https://github.com/torvalds/linux


Título: Re: Interprete de ensamblador a C
Publicado por: T3TR@TR35 en 13 Julio 2018, 22:53 pm
Osea que con el codigo fuente ya esta?
Pero no es solo Linux...un tipo me dijo que los kernel estan escritos en ensamblador. Yo quisiera poder modificar tanto el kernel de un Linux, como de un WIndows, como de un BSD...cualquier kernel que pudiese conseguir.
Mi idea es ser programador de kernel.
Igual, por algun lado debo comenzar. Gracias por tu contribucion!
P.D.: Ya conocia el kernel de Linux. De hecho, lo compile e instale una vez, porque la version que tenia en mi SO era mas antigua. Lo que quiero saber, es como interpreto esas lineas. Que programa o lenguaje deberia saber para entender lo que dice ahi, a eso voy. Porque una cosa es tener el kernel; ahora, otra muy distinta, es poder entenderlo y editar a lenguaje de alto nivel, no se si me explico.


Título: Re: Interprete de ensamblador a C
Publicado por: CalgaryCorpus en 14 Julio 2018, 07:50 am
Estudia, aprende y practica C y C++.
Gran parte del codigo relacionado con este tema lo encontraras o necesitaras escribirlo en estos lenguajes.

Si lees ingles, te sugiero leer esta pregunta y respuesta:

https://softwareengineering.stackexchange.com/questions/84542/advice-for-an-ambitious-student-on-building-your-own-kernel

donde se recomienda no comenzar leyendo el codigo fuente de linux para inspirarse o aprender, y tambien la lectura de algunos libros, como

http://www.ipdatacorp.com/mmurtl/



Título: Re: Interprete de ensamblador a C
Publicado por: MAFUS en 14 Julio 2018, 17:16 pm
No, empiezas muy mal. Es como querer ser arquitecto y empiezas a leer planos. A parte de ver un montón de rayas y vislumbrar en ellas una columna aquí y un arco allá no verás nada más.
Detrás están todos los cálculos de cargas, resistencias de materiales, composición del forjado y del hormigón. Es decir: el código fuente, como un plano de una obra, es un resultado de todo un largo estudio que hay detrás.
Y ya si hablamos del kernel de un sistema operativo estamos hablando de temas mayores: manejo de memoria, interrupciones, asignación de tiempos de procesado, drivers, APIs.

Fíjate si tienes muchas cosas que aprender antes siquiera de empezar a ponerte delante de tu editor de código favorito.


Título: Re: Interprete de ensamblador a C
Publicado por: ThunderCls en 16 Julio 2018, 20:16 pm
Buenas, esta vez los molesto porque quisiera saber si hay algun programa o medio para traducir de lenguaje ensamblador a lenguaje C.
Voy a bajarme el kernel de un SO y quisiera examinarlo.
P.D.: es posible, luego de convertirlo a C, pasarlo a hexadecimal para poderlo convertir a ASCII?
Se que es algo complejo o lioso, cualquier ayuda esta mas que bienvenida.
Gracias :D

Si quieres obtener codigo C/C++ desde una binario compilado entonces necesitas un decompilador (IDA Pro + Hex-rays Decompiler), no te dara un codigo 100% compilable pero es lo mas cerca que conseguiras. Por otra parte si quieres simplemente convertir source code de un lenguaje al otro creo que vas a tener que aprender ambos lenguajes y hacer la traduccion manualmente. No creo entender muy bien esta otra pregunta: "es posible, luego de convertirlo a C, pasarlo a hexadecimal para poderlo convertir a ASCII?"...no entiendo porque querrias hacer esto.

PD: Igual lo que estas intentando hacer se llama "Ingenieria Inversa" y justo en ese foro es a donde creo que deberia ser movido este hilo...Sin embargo, tampoco esperes reversear un kernel con la misma simplicidad con la que te refieres a la accion en si...pero bueno, ya eso lo veras por ti mismo...suerte!