elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  punto de inicio de ejecucion de un programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: punto de inicio de ejecucion de un programa  (Leído 3,395 veces)
Abloos

Desconectado Desconectado

Mensajes: 12


Ver Perfil
punto de inicio de ejecucion de un programa
« en: 14 Junio 2011, 21:58 pm »

Hola gente, estuve buscando y la verdad no encontre, puede que alla buscado mal, no se. La cuestion es la siguiente, en un programa escrito en C/C++ el punto de entrada o inicio de ejecucion es la funcion main(), ahora, ¿es posible establecer otro punto de inicio de ejecucion? o ¿como puedo saberlo? teniendo el codigo fuente. La duda surge, por que baje varios tarball con codigo fuente open source, mis intencion son ayudar, pero no tengo ni la mas minima idea de donde empezar a revisar el codigo, como para entenderlo y saber como funciona. Bueno, espero no estar preguntando una tonteria, ya que, la verdad pregunto por que no se. Les agradezco a los que contesten de ante mano.


En línea

ignorar la realidad no cambia la realidad
Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: punto de inicio de ejecucion de un programa
« Respuesta #1 en: 15 Junio 2011, 14:28 pm »

Depende del compilador y del enlazador que uses. Eso sí, aunque lo pudieras hacer no pertenecería al estándar de C/C++.


En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: punto de inicio de ejecucion de un programa
« Respuesta #2 en: 15 Junio 2011, 14:42 pm »

@Abloos: Depende del sistema operativo y qué sea eso que bajaste (ejecutable o librería por ejemplo).
Eso es importante saberlo antes de seguir.

Saludos.
En línea

Abloos

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: punto de inicio de ejecucion de un programa
« Respuesta #3 en: 15 Junio 2011, 16:59 pm »

baje vario programas, pero este en particular es el escritorio liviano OpenBox. Estuve mirando por arriba el codigo y encontre una funcion main_loop. Pero no me cierra como se inicia la ejecución cuando el sistema comienza a correr este programa. Por lo que se, el sistema reconoce el tipo de ejecutable y salta al punto de inicio de ejecucion luego de realizar la carga en memoria.
Otro por ejemplo que baje fue el KMess, pero alli el codigo es un poco mas ordenado, con el uso de las librerias Qt que utilizan un tipo de bucle que es lanzado desde la función main del mismo.
Lei algunos tutos y libros sobre C/C++ pero no tratan el tema o no supe buscar, por eso me decidí a preguntar en el foro.
Y el tema de las librerias tampoco me quedo muy claro como es que funcionan.
En línea

ignorar la realidad no cambia la realidad
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: punto de inicio de ejecucion de un programa
« Respuesta #4 en: 16 Junio 2011, 03:33 am »

baje vario programas, pero este en particular es el escritorio liviano OpenBox. Estuve mirando por arriba el codigo y encontre una funcion main_loop. Pero no me cierra como se inicia la ejecución cuando el sistema comienza a correr este programa. Por lo que se, el sistema reconoce el tipo de ejecutable y salta al punto de inicio de ejecucion luego de realizar la carga en memoria.
Otro por ejemplo que baje fue el KMess, pero alli el codigo es un poco mas ordenado, con el uso de las librerias Qt que utilizan un tipo de bucle que es lanzado desde la función main del mismo.
Lei algunos tutos y libros sobre C/C++ pero no tratan el tema o no supe buscar, por eso me decidí a preguntar en el foro.
Y el tema de las librerias tampoco me quedo muy claro como es que funcionan.

Ya veo, ya con este mensaje veo que usás GNU/Linux y hablamos de lo promedio, empezar a aprender sobre el código de un software  ... lo *normal* es tener un main (aunque sea con no más de 5 líneas llamando a un bucle en otro lado que controle la  ejecución) y normalmente hay que buscar algún archivo de nombre main.c,main.cc,main.cxx,main.cpp,etc o con el nombre del software.

También conocer las diversas formas de compilar software te puede servir para entender cómo se compila un software (y poder ver qué partes forman qué al leer la descripción de cómo se compila), sistemas como autotools, cmake, etc ...

En el caso de OpenBox, me bajé el código del repositorio de git para mirarlo y openbox está formado por varios componentes, y en el caso de openbox, el main() está en openbox/openbox.c (recordá la regla de buscar archivos de nombre main o con el nombre del programa en cuestión)

De ahí tenés un punto de partida, aunque insisto, lo mejor es ver cómo se compila, por que en software que no es monolítico (léase : que no está en componentes, sino que es código que se compila ys e enlaza todo "de una") y está formado por varios componentes, podés establecer cómo se relacionan, qué depende de qué, etc ... para después zambullirte en el código con una idea general del software en cuestión.

No sé si era eso lo que preguntaste, si vá por el lado de más bajo nivel como config del compilador, rt y funciones/hooks que se usan en los diferentes sistemas al iniciar un software/cargar una librería, entonces la respuesta está acá :
http://disassembling.org.ua/6555final/lib0018.html
http://gd.tuwien.ac.at/pub/linuxgazette/issue84/hawk.html

Citar
Y el tema de las librerias tampoco me quedo muy claro como es que funcionan.

¿Qué es lo que no entendés?

Saludos.
« Última modificación: 16 Junio 2011, 03:35 am por vertex@Symphony » En línea

Abloos

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: punto de inicio de ejecucion de un programa
« Respuesta #5 en: 16 Junio 2011, 12:25 pm »

Gracias che, entonces la función main, si hablamos de standard siempre existe en el codigo de un binario. Si mal no entiendo?. Y la parte de librerías, creo que me las voy a arreglar cuando necesite.
Si, uso GU/Linux en su distribución ArchLinux con KDE, hace unos dos años más o menos, un usuario intermedio digamos. Pero no es algo que lo ande divulgando. je.
Gracias por las respuestas che, me fueron de ayuda.
En línea

ignorar la realidad no cambia la realidad
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pausar la ejecucion de un programa « 1 2 »
Programación Visual Basic
EstoyBaneado 14 10,982 Último mensaje 17 Junio 2005, 10:18 am
por Slasher-K
Evitar ejecucion de programa.
Programación Visual Basic
Gorky 7 5,765 Último mensaje 26 Mayo 2006, 00:19 am
por Krnl64
Paso de parametros a programa en ejecucion « 1 2 »
Java
Lopardo 12 9,252 Último mensaje 7 Enero 2008, 14:09 pm
por egyware
Manera de modificar un programa en ejecucion?
Programación Visual Basic
schumacher 6 2,754 Último mensaje 5 Agosto 2008, 00:35 am
por schumacher
[Ayuda] Retrasar ejecucion de un programa al inicio de windows
Scripting
brujeria11 2 7,766 Último mensaje 28 Marzo 2013, 17:47 pm
por $Edu$
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines