Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 9 Febrero 2011, 02:30 am



Título: Saber que ejecutable o lenguaje es.
Publicado por: Meta en 9 Febrero 2011, 02:30 am
Hola:

Haciendo un ejemplo tonto cualquiera sea con el VB .net o el C# 2010 Express. Creo un botón con un mensaje. Dentro del Form agrego un label y un botón que al pulsarlo muestre Hola mundo por poner un ejemplo sencillo.

¿Hay alguna forma de examinar con cual lenguaje se ha programado ese ejecutable .exe?

Se que puedo cambiar los textos con un editor hexadecimal, también puedo cambiar la versión y nombre de los botones y versiones del programa, cosas así. No se si habrá programa ya hechos para modificar o entender que se ha hecho con ese .exe o al menos hacer un programa nosotros mismo muy sencillo para detectar abrir un .exe y que sepa de qué lenguaje es, otro ejemplo, poner una imagen en el centro de un form1, cosas así.

¿Es posible?

Saludo.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Edu en 9 Febrero 2011, 02:41 am
Descompilar decis vs, no se puede pero depende la interfaz grafica te podes dar cuenta a veces de q lenguaje usaron.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: seba123neo en 9 Febrero 2011, 02:52 am
con el nombre de clases de las ventanas y el Spy++ o cualquier otro visor de ventanas.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Meta en 9 Febrero 2011, 09:58 am
Supogamos que está hecho con C#. ¿Cómo lo puedo saber? Puede estar hecho con C++ o el VB .net.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: .:Weeds:. en 9 Febrero 2011, 13:58 pm
"CREO" que cuando se programa algo en vb.net, el compilador lo pasa a C#, muchos de mis programas en vb.net cuando los descompilo me los muestra en C#, asi que es un poco dificil saberlo, no estoy seguro de lo que digo tampoco xD
Saludos.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Edu en 9 Febrero 2011, 15:10 pm
Como lo descompilas? xD


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Meta en 9 Febrero 2011, 15:48 pm
Parece lo descompila con esto.

http://www.red-gate.com/products/dotnet-development/reflector/

http://msdn.microsoft.com/es-es/magazine/cc300497%28en-us%29.aspx

No creo que de VB net lo pase a C# ni loco.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: SnakingMax en 9 Febrero 2011, 16:18 pm
Te puedes dar cuenta si con el editor hexadecimal abres el ejecutable y hay llamadas a librerias propias de un lenguaje por ejemplo.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Meta en 9 Febrero 2011, 20:33 pm
Lo que te refieres es el .net. Son las mismas en C# y VB .net.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Sauruxum en 9 Febrero 2011, 21:27 pm
"CREO" que cuando se programa algo en vb.net, el compilador lo pasa a C#, muchos de mis programas en vb.net cuando los descompilo me los muestra en C#, asi que es un poco dificil saberlo, no estoy seguro de lo que digo tampoco xD
Saludos.

Si no me equivoco, la cosa es que en .NET que trabaja con distintos lenguajes transforma el codigo que escribes en un cierto lenguajes a una especie de assembler que creo que se llama CLR ( common runtime language ), por lo que no podras saber viendo directamente los binarios si ha sido escrito en C# o VB.NET

Pero creo que esto podria traer ventajas en la decompilacion.

Saludos


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Edu en 9 Febrero 2011, 21:32 pm
Creo q es el MSIL pero no se si tiene q ver


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: Sauruxum en 9 Febrero 2011, 21:37 pm
Creo q es el MSIL pero no se si tiene q ver

Aja, si me equivocaba xD

Si tiene que ver, ya que muchas funciones y operadores y todas esas cosas son comunes en los dos lenguajes, y al compilar te las transforma en eso que es comun, entonces no podras identificar con que lenguaje en especifico esta hecho a no se que quede algun tipo de registro especificamente. O que exista algo MUY especifico de cierto lenguaje, lo que dudo bastante.

Saludos


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: 43H4FH44H45H4CH49H56H45H en 10 Febrero 2011, 09:26 am
Para saber en que lenguaje fue creado un programa en general se puede utilizar PEiD-0.95, RDG Packer Detector v0.6.6 y otros.
Los programas .NET (C# - VB) no son diferenciados, puesto que ni el mismo framework sabe en que lenguaje fue creado cuando los ejecuta.

Saluos!


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: 43H4FH44H45H4CH49H56H45H en 13 Febrero 2011, 00:08 am
Viendo un poco mas a fondo, si se puede saber en que lenguaje fue creado algún programa .NET (sea VB o C# que son los que probe) luego de desensamblarlo y generar un archivo .il el lenguaje puede ser identitficado, asi tb herramientas como reflector y similares pueden identificar lo mencionado.
Saluos.


Título: Re: Saber que ejecutable o lenguaje es.
Publicado por: [D4N93R] en 15 Febrero 2011, 21:13 pm
Sí como dice CodeLive,

La cosa es que en realidad el framework nunca sabe a partir de qué lenguaje se generó el IL, porque en realidad no le importa. Lo que le importa es que el IL sea correcto.

Pero, como cada compilador de cada lenguaje está hecho de forma totalmente independiente, pequeñas diferencias se pueden notar desde un IL que venga de C# a un IL que venga de VB.Net.

Un saludo.