Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Windows programming

Estas en el tema de Windows programming en el foro de C/C++ en Foros del Web. Hola a todos! queria hacer una consulta, necesito hacer una aplicacion que me permita monitorear otro programa que usamos en mi empresa, para poder entender ...
  #1 (permalink)  
Antiguo 08/10/2007, 14:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 29
Antigüedad: 17 años, 2 meses
Puntos: 0
Windows programming

Hola a todos! queria hacer una consulta, necesito hacer una aplicacion que me permita monitorear otro programa que usamos en mi empresa, para poder entender mejor como funciona (ya que no tenemos acceso al codigo fuente) y para poder extenderlo y agregar funcionalidad. Conocimientos de programacion tengo, en C y C++, pero no habia programado sobre windows. Estuve investigando algo de Detours y entiendo que me puede servir para mi proposito. Pero me encontre con la dificultad, cuando empece a ver el codigo de la libreria Detours, que necesito entender cosas propias de la plataforma Windows. Actualmente estoy leyendo este libro de Charles Petzold: "Programming Windows.5thEd." No es que este mal, pero quiero algo mas detallado. Que explique detalladamente el codigo de ejemplo que incluye en el libro. Hay cosas muy basicas que no aparecen y quizas pierdo un monton de tiempo buscadolas por internet, cuando en realidad me gustaria tenerlas todas juntas en la misma obra. Desde ya muchas gracias! Espero su respusta...
  #2 (permalink)  
Antiguo 08/10/2007, 15:55
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Windows programming

¿Y esto que tiene que ver con C/C++, aparte de que Windows exporte funciones C?

Si quieres libros, busca en Google sobre ello; o bien ve a la librería y mira por ti mismo los que creas que sean más detallados y les compres.
  #3 (permalink)  
Antiguo 08/10/2007, 21:40
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Re: Windows programming

Yo creo que el libro que tienes es mas que suficiente.
Lo mas que podrias usar para complementar seria la mismisima MSDN. Ahi esta TOOOOOOOODOOOOOOO sobre programacion windows, TODO.

Saludos
  #4 (permalink)  
Antiguo 09/10/2007, 04:16
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Re: Windows programming

Para poder entender la libreria Detours tenes que saber algo de assembly como minimo ... y sinceramente extender un programa y agregarle funcionalidad sin tener el codigo fuente: utopia. Es preferible escribirlo de cero ...

Lo mejor que podes hacer es desensamblarlo y depurarlo para empezar a reconstruirlo. No en todos lados es legal hacer esto y por eso me pregunto cual es la razon por la cual tienen un programa sin el codigo fuente ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 09/10/2007, 07:20
 
Fecha de Ingreso: octubre-2007
Mensajes: 29
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Windows programming

Tienen el programa sin el codigo fuente porque no es una aplicacion propia. Tienen la licencia, pero la empresa que hice el software no les brinda ningun tipo de soporte. Creo que son unos chantas! en fin, hace poco que empece a trabajar aqui y resulta que todavia no hay proyectos de hacer ningun desarrollo nuevo, desafortunadamente. Muchas gracias por las respuestas, a quienes tuvieron la amabilidad de contestarme algo util. Saludos!
  #6 (permalink)  
Antiguo 09/10/2007, 08:00
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Re: Windows programming

Cita:
Iniciado por leojava2007 Ver Mensaje
Tienen el programa sin el codigo fuente porque no es una aplicacion propia. Tienen la licencia, pero la empresa que hice el software no les brinda ningun tipo de soporte. Creo que son unos chantas! en fin, hace poco que empece a trabajar aqui y resulta que todavia no hay proyectos de hacer ningun desarrollo nuevo, desafortunadamente. Muchas gracias por las respuestas, a quienes tuvieron la amabilidad de contestarme algo util. Saludos!
Entonces dudo que sea legal extenderlo o modificarlo en cualquier caso, mejor hacerlo de cero.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 09/10/2007, 11:46
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Windows programming

Cita:
Iniciado por leojava2007 Ver Mensaje
Tienen el programa sin el codigo fuente porque no es una aplicacion propia. Tienen la licencia, pero la empresa que hice el software no les brinda ningun tipo de soporte. Creo que son unos chantas! en fin, hace poco que empece a trabajar aqui y resulta que todavia no hay proyectos de hacer ningun desarrollo nuevo, desafortunadamente. Muchas gracias por las respuestas, a quienes tuvieron la amabilidad de contestarme algo util. Saludos!
Si usárais software libre ("as in freedom"), no os pasarían esas cosas :D
  #8 (permalink)  
Antiguo 09/10/2007, 14:32
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 22 años, 2 meses
Puntos: 4
Re: Windows programming

propongo reescribir desde 0 un clon del programa.

yo tuve que hacerlo para migrar un programa antiguo (con codigo fuente a mano fue mucho mas facil)
__________________
Blog | Tecnosquad
  #9 (permalink)  
Antiguo 09/10/2007, 15:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 29
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Windows programming

Si, yo creo que lo mejor es empezar de cero. Porque el programa es un quilombo. Creo que sus propios creadores no lo entienden :P pero bueno, estoy leyendo algo de ingenieria inversa que me resulta muy interesante y me puede servir. Sin embargo, la mejor opcion es empezar todo de nuevo. Saludos, y muchas gracias a todos por su interes.
  #10 (permalink)  
Antiguo 12/10/2007, 07:53
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Windows programming

Cita:
Iniciado por leojava2007 Ver Mensaje
Si, yo creo que lo mejor es empezar de cero. Porque el programa es un quilombo. Creo que sus propios creadores no lo entienden :P pero bueno, estoy leyendo algo de ingenieria inversa que me resulta muy interesante y me puede servir. Sin embargo, la mejor opcion es empezar todo de nuevo. Saludos, y muchas gracias a todos por su interes.
El conocimiento requerido para añadir funcionalidades a un programa en binario no es precisamente el de un novato.

Vamos, que no es coger un tutorial y ponerte a "leer algo de ingeniería inversa".
  #11 (permalink)  
Antiguo 12/10/2007, 13:02
 
Fecha de Ingreso: octubre-2007
Mensajes: 29
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Windows programming

Si es cierto, en este ultimo tiempo tuve oportunidad de aprender eso. No es para nada sencillo y hay que saber muchisimo. Ni siquiera creo que lo lleve a cabo, tardaria menos tiempo diseñando yo solo todo el programa de nuevo :P Pero si pueden aportar datos nuevos se los agradeceria. Por ejemplo, no entendi como puedo hacer para separar el binario en las modulos funcionales, o como darme cuenta de donde esta el main... alguien me puede brindar algo de ayuda? Saludos!
  #12 (permalink)  
Antiguo 12/10/2007, 13:19
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Re: Windows programming

Pues yo noe stoy asi muy seguro. Lo que te dire es solo teorico, es decir, nunca lo he probado.

Se supone que al compilar un programa primero se........ compila, es de cir se producen modulos de codigo objeto y despues estos modulos se enlazan unos con otros para producir el ejecutable.

Por lo menos en linux hay herramientas para saber que modulos estan enlazados con que modulos. Nunca las he usado, pero alguna vez lei algo al respecto.

El punto seria hacer en enlazado inverso para tener modulos "funcionales" y despues desensamblar. Posiblemente ahi produciria un codigo mucho mas legible que al desensamblar directamente el ejecutable. Todo depende del compilador que haya ensamblado.....

Saludos
  #13 (permalink)  
Antiguo 12/10/2007, 14:23
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Re: Windows programming

No es asi. Lo que podes encontrar son diferentes secciones del ejecutable PE de diferente tipo, codigo, datos (constantes o no), recursos, tls, etc.

El "main" como tal podes buscarlo pero en realidad lo que vas a encontrar es el main de la RTL (Run Time Library) del compilador usado. Si queres desensamblarlo consegui el IDA que es capaz de identificar funciones (no su nombre ni lo que hacen obviamente) PERO tenes que saber MUCHO de assembly para que te sea realmente util.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #14 (permalink)  
Antiguo 12/10/2007, 17:14
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Windows programming

Vaya, qué extraño, no me deja usar el botón de "Responder" de ahí abajo... Pierdo la sesión, duh.

Normalmente los compiladores/enlazadores optimizan las cosas de manera que el binario resultante tiene muy poco que ver en estructura con lo que se supone que lo ha generado.

Además de la dificultad intrínseca de leer el programa en ensamblador (siendo un programa muy grande), se usan muchas optimizaciones que dificultan una lectura lógica del código: Si te han desenrollado un for, te han "inlineado" unas cuantas funciones y va saltando por vtable, ya te puedes volver loco sólo para entender por dónde va el flujo de ejecución.

En cualquier caso, aparte de tener que entender todo eso, después tienes que añadir la funcionalidad adicional en partes no ocupadas, sin romper nada de lo demás y atendiendo a las especificaciones del programa. Había gente que hacía eso a programas de free-trial, pero hoy en día, dada la facilidad de conseguir el original y desbloquearlo para dejarlo al completo, ese arte está prácticamente muerto.
  #15 (permalink)  
Antiguo 12/10/2007, 21:19
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Re: Windows programming

Seguramente te haran optimizaciones y haran mas pequeño o mas rapido el codigo, pero a final de cuentas hace lo mismo. Igual y es mas dificil de leer igual y no tanto, todo depende del codigo que se compila y luego se desensambla.

Digo, yo he analizado programas enteros en ensamblador y pues despeus de encontrar algunos patrones entiendes que es lo que el programa intenta hacer. Y claro, al ver el codigo en C nada que ver, aunque la tarea final sea la misma.
Es como ver un codigo alternativo a lo que tu originalmente escribiste.

Saludos
  #16 (permalink)  
Antiguo 13/10/2007, 05:57
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: Windows programming

Cita:
Iniciado por Instru Ver Mensaje
Seguramente te haran optimizaciones y haran mas pequeño o mas rapido el codigo, pero a final de cuentas hace lo mismo.
Hace lo mismo (obviamente) pero no de la misma forma.

Cita:
Igual y es mas dificil de leer igual y no tanto, todo depende del codigo que se compila y luego se desensambla.
Coge un programa simple en C, por ejemplo, uno que imprima la serie de Fibonacci hasta que le mates desde otra terminal; compílale a ensamblador para ver el código resultante; tras eso, vuelve a compilarlo pero esta vez con optimizaciones al completo y enfocado a la arquitectura que tengas.

Número de líneas (~instrucciones):

$ cat fib.s.noopt | wc -l
73
$ cat fib.s.opt | wc -l
369

Número de etiquetas de salto:

$ cat fib.s.noopt | grep ^.L | wc -l
6
$ cat fib.s.opt | grep ^.L | wc -l
49

Número de saltos:

$ cat fib.s.noopt | grep j.. | wc -l
6
$ cat fib.s.opt | grep j.. | wc -l
57

No tiene ni punto de comparación (el código fuente C tenía 20 líneas incluidas vacías, 2 funciones, un "if" y un "for").

Cita:
Digo, yo he analizado programas enteros en ensamblador y pues despeus de encontrar algunos patrones entiendes que es lo que el programa intenta hacer. Y claro, al ver el codigo en C nada que ver, aunque la tarea final sea la misma.
Es como ver un codigo alternativo a lo que tu originalmente escribiste.
Posible es, pero entender un programa completo proveniente de C++, con optimizaciones aplicadas al completo y pensado para una arquitectura como prescott; y lo has entedido; no es trivial, y siquiera sé si alguien tiene ese hobby; es tal el número de variables, saltos, ... que debes controlar al mismo tiempo que se hace inabarcable.
  #17 (permalink)  
Antiguo 16/10/2007, 07:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 29
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Windows programming

Bueno, encuentro puntos de vista distintos. Todos me aportan algo, no hay duda que (dejando la factibilidad de que pueda hacerlo) va a ser una tarea muy dificil. Por ahora, creo que voy a mantenerme lejos del codigo assembly. Me limitare quizas a entender un poco mejor que es lo que hace el programa observando las llamadas a librerias por ejemplo. Tengo entendido que el API Monitor es muy util para esto. Los mantendre al tanto de las novedades. Muchas gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:04.