Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: el_mamer en 19 Julio 2014, 18:40 pm



Título: Crear ejecutable de proyecto seguro
Publicado por: el_mamer en 19 Julio 2014, 18:40 pm
Hola,

me gustaría saber si tras crear el ejecutable de un proyecto en VS Express 2013 [Opción COMPILAR -> PUBLICAR], éste es seguro, es decir, no hay posibilidad de que se pueda hacer una especie de reverso y acceder al código, modificarlo y recompilarlo.

Necesito que el ejecutable sea seguro e incorruptible cuando se distribuya a los usuarios finales.

Muchas gracias.


Título: Re: CREAR EJECUTABLE DE PROYECTO SEGURO
Publicado por: engel lex en 19 Julio 2014, 18:52 pm
Necesito que el ejecutable sea seguro e incorruptible cuando se distribuya a los usuarios finales.

XD! estás pidiendo mucho!

hasta donde se .NET es ciertamente reversible por su naturaleza de funcionamiento, cosas como esta (http://www.decompiler-vb.net/vbreformer-free.aspx) son comunes y populares...

realmente para que no sea reversible y seguro tendrías que usar (hasta donde conozco) java o c++ y para que sea seguro,  hacer toda la parte de cifrado, memoria dinámica, etc...


Título: Re: CREAR EJECUTABLE DE PROYECTO SEGURO
Publicado por: el_mamer en 19 Julio 2014, 18:56 pm
Gracias por la info!!!
estoy leyendo cosas sobre la ofuscación de código: http://www.gapotchenko.com/eazfuscator.net

sabes algo al respecto?


Título: Re: CREAR EJECUTABLE DE PROYECTO SEGURO
Publicado por: engel lex en 19 Julio 2014, 19:00 pm
puede servir... pero espera a ver si alguien del foro de seguridad o hacking te puede ayudar con eso... por cierto, arregla el titulo y quitale las mayusculas


Título: Re: Crear ejecutable de proyecto seguro
Publicado por: el_mamer en 19 Julio 2014, 19:02 pm
Gracias!!!


Título: Re: Crear ejecutable de proyecto seguro
Publicado por: kub0x en 20 Julio 2014, 01:59 am
La pega de .NET es que necesita de un intérprete que traduce las instrucciones (.NET opcodes) en código máquina. Por lo que al compilar un ensamblado .NET, éste es guardado con las instrucciones que serán traducidas posteriormente, es decir, no es puro código máquina.

Esta es la gran diferencia entre los lenguajes interpretados y compilados. Si no conoces bien como funciona esto, imagínate el entorno de ejecucción de .NET como un supervisor que controla referencias de memoria, optimización y además permite correr tus programas hechos bajo .NET.

En C++ es el programador quien tiene que lidiar con el trabajo de liberar recursos, quien tiene que optimizar (aunque el compilador ayude..) etc
No digo nada del Framework pues en C++ también los puedes encontrar, sólo hago una distinción de la arquitectura interna, y ya veis que muy breve.

En cuanto a la seguridad en ensamblados de .NET, pues no existe, ya que todo es reversible, esté ofuscado, empaquetado etc Existen programas capaces de desofuscar y de invalidar técnicas anti reflectores.

https://github.com/0xd4d/de4dot Ahí encontraras los ofuscadores que es capaz de romper. Recomiendo agarrar unos buenos tutoriales de las "internals" de .NET, irse a la parte de metadatos, ver como se estructuran las definiciones de los miembros y métodos de clases y alterar cierta info.. Otra de ellas es cargar el ensamblado .NET mediante el CLR desde C++, así será más díficil para el cracker tirarle ing inversa (una de mis favoritas ;) ).

Y todavía hay mas...

Saludos!


Título: Re: Crear ejecutable de proyecto seguro
Publicado por: el_mamer en 20 Julio 2014, 08:01 am
Muchas gracias por la completa información!!!
Buscando más información en Internet y foros he leído cosas sobre la huella o firma digital en el ejecutable, como una especie de checksum del programa.
¿Sabes algo al respecto y me puedes aconsejar?
Muchas gracias!!!


Título: Re: Crear ejecutable de proyecto seguro
Publicado por: engel lex en 20 Julio 2014, 08:23 am
el cheksum creo que ya sabes lo que es, que vendría siendo por ejemplo el md5 del programa... la huella son una serie de instrucciones (o comportamientos) que hacen tu programa identificable... esto se usa mucho en el análisis de virus... como hay cosas que la gente conoce pocas formas de hacer (ej un keylogger) el av simplemente revisa si tiene un comportamiento especifico, de suceder este comportamiento, se marca como el tipo...