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.
Descompilar decis vs, no se puede pero depende la interfaz grafica te podes dar cuenta a veces de q lenguaje usaron.
con el nombre de clases de las ventanas y el Spy++ o cualquier otro visor de ventanas.
Supogamos que está hecho con C#. ¿Cómo lo puedo saber? Puede estar hecho con C++ o el VB .net.
"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.
Como lo descompilas? xD
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.
Te puedes dar cuenta si con el editor hexadecimal abres el ejecutable y hay llamadas a librerias propias de un lenguaje por ejemplo.
Lo que te refieres es el .net. Son las mismas en C# y VB .net.
Cita de: .: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.
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
Creo q es el MSIL pero no se si tiene q ver
Cita de: XXX-ZERO-XXX en 9 Febrero 2011, 21:32 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
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!
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.
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.