Crear ejecutable de proyecto seguro

Iniciado por el_mamer, 19 Julio 2014, 18:40 PM

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

el_mamer

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.

engel lex

Cita de: el_mamer en 19 Julio 2014, 18:40 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 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...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

el_mamer

Gracias por la info!!!
estoy leyendo cosas sobre la ofuscación de código: http://www.gapotchenko.com/eazfuscator.net

sabes algo al respecto?

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.


kub0x

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!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


el_mamer

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!!!

engel lex

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...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.