como se hacen los programas .exe ?

Iniciado por 7emiliosk8, 28 Febrero 2017, 18:56 PM

0 Miembros y 1 Visitante están viendo este tema.

7emiliosk8

Hola me gustaria saber como se hacen los programas que uno tiene en el pc (los .exe) todos se hacen de la misma forma ? vi que algunos se hacian con visual studio, pero por ejemplo los programas como "Megadownloader" que es para descargar desde megashare tambien esta hecho asi ?, como puedo saber con que programa se hace photoshop por ejemplo o todo tipo de software , gracias

Orubatosu

En general cualquier lenguaje compilado genera un "exe" cuando se compila para su ejecución dentro de entornos Windows. Incluso algunos interpretados tienen la posibilidad de hacerlo como Java, aunque en esos casos requiere que haya ciertas librerías en el ordenador donde se va a ejecutar

C o C++ por ejemplo pueden crear ejecutables exe, otros pueden crear otro tipo de ejecutables como Java que crea un "Jar ejecutable"
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

7emiliosk8

claro C crea un ejecutable, pero por ejemplo ene l caso de Megadownloader como el programa que menciono, en base a que codigo esta hecho ? o con que programa... como puedo saber eso, esa es mi duda

Orubatosu

En cualquier cosa. Hay montones de lenguajes que te permiten hacer ese y cualquier otro programa. El uso de uno u otro es una simple cuestión de comodidad o gustos.

Por ejemplo tienes programas de BT hechos en Java como Vuze (antes Azureus). De hecho hay aplicaciones que están hechas en Pyton o en cualquier otro.

Lo importante no es tanto la elección del lenguaje como los resultados. En algunos casos puede convenirte mas usar un programa como Java antes que intentar desarrollar "a pelo" todas las enormes facilidades que este te da en forma de librerías, en otras puede que te interese optar por un C "pelao" por cuestiones de eficiencia

A menos que puedas tener acceso al código fuente de Megadownloader o que te digan en que se ha escrito, pues mal asunto para averiguarlo como no sea por prueba y error intentando con diferentes herramientas "decompilarlo". Hay otros métodos mas complejos claro, pero ¿vale la pena el esfuerzo?

Según he mirado por ahi, parecer ser que está escrito en C#
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

Eleкtro

#4
Cita de: 7emiliosk8 en 28 Febrero 2017, 20:20 PMel programa que menciono, en base a que codigo esta hecho ? o con que programa... como puedo saber eso, esa es mi duda

Puedes cargar el archivo executable en un visor hexadecimal para analizar la estructura de datos del formato PE de dicho executable, en concreto su firma o número mágico, y así tratar de identificar (en base a un porcentaje de probabilidades) que lenguaje se utilizó para su desarrollo.

Hay aplicaciones dedicadas a este tipo de análisis en donde solo tienes que cargar el archivo y te muestra los resultados del análisis, como por ejemplo PEiD o TridNet.


Otra forma sería mediante la intuición, pues en muchos casos no es nada dificil averiguar que lenguaje de programación han usado para desarrollar una aplicación, basándose en el tipo y el aspecto de los controles de la interfáz gráfica (es muy facil identificar a ojo algunas tecnologías como WPF) y en las dependencias del programa, si por ejemplo usa ensamblados de .NET o archivos específicos de otros lenguajes. O simplemente analizando las librerías de Windows que se cargan y cuales runtimes, al iniciar el executable.




Cita de: 7emiliosk8 en 28 Febrero 2017, 18:56 PMvi que algunos se hacian con visual studio, pero por ejemplo los programas como "Megadownloader" que es para descargar desde megashare tambien esta hecho asi ?

Visual Studio es una IDE (un entorno de programación) no un lenguaje. El lenguaje C# pertenece a la plataforma .NET Framework, la cual soporta otros varios lenguajes, y no puedes averiguar si un programa ha sido desarrollado específicamente en un lenguaje en concreto de .NET Framework (como C#, VB.NET, o VC++ managed) ya que a pesar de ser lenguajes diferentes son en esencia lo mismo por que todos compilan el mismo set de instrucciones bajo el CLR de Microsoft (y una vez descompilado un executable d e.NET, se pueden representar las instrucciones en cualquiera de los lenguajes soportados por .NET), así que en todo caso lo que puedes identificar (sin disponer del código fuente o de información oficial sobre como se desarrolló) es saber si se trata o no de un ensamblado .NET, pero no saber si fue escrito en C#, F#, VB.NET, o etc...




Cita de: Orubatosu en 28 Febrero 2017, 21:48 PMSegún he mirado por ahi, parecer ser que está escrito en C#

Una forma unicamente específica y segura al 100% para comprobar si un executable ha sido desarrollado bajo alguno de los lenguajes soportados por .NET Framework (C#, VB.NET, etc) sin necesidad de trabajar con aplicaciones externas a Visual Studio para la identificación, sería mediante la tecnología Reflection, intentando cargar el executable mediante ciertos miembros disponibles en la librería de clases de .NET Framework para ese fin, ya que estos solo soportan la carga de ensamblados .NET.

(También podemos utilizar otras aplicaciones especializadas con el mismo fin, descompiladores como .NET Reflector de RedGate)

Mediante esta metodología, podemos comprobar que la aplicación "MegaDownloader", que supongo te refieres a esta de aquí: http://megadownloaderapp.blogspot.com.es/2013/01/enlaces-de-descarga-castellano.html -efectivmente ha sido desarrollada bajo .NET Framework, concretamente bajo la versión 4.0.

Para concluir si la aplicación ha sido desarrollada concretamente en el lenguaje C#, lo podriamos intentar mediante el descarte, comprobando las referencias del executable. En este caso el tal "MegaDownloader" no incluye una referencia directa a la librería Microsoft.VisualBasic.dll la cual sí que se incluye por defecto como referencia en un executable escrito bajo el lenguaje VB.NET, pero lo cierto es que esto es una conclusión inconcluyente. También podriamos analizar/monitorear en profundidad las dependencias que se cargan por el executable con aplicaciones como Dependency Walker, pero esto sería igual de inconcluyente... .NET es .NET, no solamente C#, ni VB.NET.

¡Saludos!