• Lunes 23 de Diciembre de 2024, 08:22

Autor Tema:  Añadir al .exe información generada por el mismo y varias  (Leído 1687 veces)

jokerman

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Añadir al .exe información generada por el mismo y varias
« en: Jueves 1 de Octubre de 2009, 18:12 »
0
Hola buenas, tengo un proyecto bastante ambicioso que llevar en Visual C++, pero como siempre en estos casos, me falta algo de experiencia y sobre todo información de como hacer ciertas cosas. Os cuento un poco lo que tengo hecho hasta ahora y lo que me falta por hacer:

        -Tengo programado un generador de llaves (no es de crackeo ni nada). La idea del generador es la siguiente: se necesita realizar copias de un software. Dicho software al inicio de su ejecución pide una llave. El caso es que para cada copia, necesite una llave distinta. Entonces el generador se encarga de ambas cosas: a partir de un software "padre" crea un hijo firmado con una llave generada. Sólo esta nueva llave creada desactivará ese software. El programa muestra la llave por pantalla, la idea es crear una base de datos en plan: software 1---> llave 1  
                                                                                           software 2----> llave 2

para que luego a cada cliente se le pase una llave y un software asociado a él.

       Hasta aquí lo que tengo hecho, ahora empiezan las preguntas:

-Necesito programar que mi programa generador de llaves sólo se puede ejecutar después de un password, y además que el usuario pueda cambiar el password de acceso. Por supuesto que sea medianamente seguro. He mirado la clase passwordbox y tal, pero ni idea de como usarla y no encuentro ningún ejemplo sobre ella. Además hay una cosa que me escama mogollón y no se muy bien como se hará: el password por defecto lo compilo, pero a la hora de cambiar el password por uno nuevo... ¿como narices hago para meter el nuevo? ¿Edito el .exe por programa y lo machaco? Mmmmm... eso podía funcionar, no?
-Necesito crear una base de datos con las llaves generadas y además que esté encriptada también. Y me interesaría que no generase archivos ni nada, que estuviese todo en un .exe todo juntito... es esto posible? La base de datos iría creciendo, con lo que el tamaño del exe también. Por si no se entiende bien: lo que quiero es en vez de tener un .txt con las llaves a parte (encriptadas o no), encapsular esta información dentro de mi .exe, para que no haya más que un archivo ¿es esto posible?

Bueno, a ver si alguno me puede echar una mano e indicarme por dónde tirar y que cosillas puedo mirar. Muchas gracias y un saludo

killrazor

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: Añadir al .exe información generada por el mismo y varias
« Respuesta #1 en: Viernes 2 de Octubre de 2009, 14:36 »
0
Lo veo un poco raro. Me explico: por un lado lo veo complicado, puesto que un archivo ejecutable no puede variar mientras se ejecuta, por que el SO no lo permite (al menos eso creo). Ademas, seguro que el antivirus de lo detectaria como virus, eso seguro.

Si todavia consiguieras hacerlo, te encontrarias con que un ejecutable comprado, con la clave puesta, seria libremente distribuida, puesto que ya tendria su clave.

Hay alternativas, como activarlo a traves de un mail, donde le mandes la clave. Me explico:
- Lo primero que necesitas es algo unico en cada maquina. Lo ideal es la MAC de la targeta de Red.
- Despues, lo mandas a un programa generador (mejor en un servidor) y generas una clave unica para cada usuario.
- Le devuelves la clave al usuario via mail (por ejemplo)
- El usuario lo mete en el programa. Dentro del programa, cada vez que lo inicies, compruebas la clave

Ahora bien, como generas la clave? Pues en el servidor, multiplicas la info que te manda el usuario, por una matriz M. El resultado es una clave.
Ahora para comprobarla, necesitas multiplicar la clave que introduce el usuario por la matriz inversa de M. El resultado deberia ser la MAC, que puedes comprobar con cada inicio del programa.

Desventajas:
Es necesario tener un server, aunque la operacion de generacion de claves puede ser creada facilmente en PHP, por ejemplo.
Si el usuario cambia de ordenador, tienes que buscar una manera de enviarle otra clave, asi que deberas indentificar quien te pide las claves
Directamente no existe una comprobacion por red de la clave, aunque no deberia de ser dificil de implementar.
No es 100% seguro. Es posible crackearlo pero no es trivial.

Ventajas:
Por mucho que un usario se lo pase a otro, con una clave oficial, esa clave va vinculada a un ordenador y solo a uno.
Es facil de implementar.
Se puede comprobar la oficialidad de la clave en cada ejecucion del programa.
Incluso usando ingenieria inversa para aislar la matriz inversa, no es trivial conseguir la matriz para generar otras claves y para fabricar un keygen.

Espero que te sirva.
Por cierto, hace tiempo que no estudio algebra, pero me parece que el tema de matrices era asi. Si no te sientes comodo con este tema o si he metido la pata, substituye la parte de matrices por cualquier otra operacion no reversible (multiplicacion de primos o cosas asi), pero basicamente es lo mismo.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Añadir al .exe información generada por el mismo y varias
« Respuesta #2 en: Viernes 2 de Octubre de 2009, 18:31 »
0
Si es posible modificar el Exe, manipulandolo como si fuera con un editor hexadecimal (logicamente a traves de codigo), la clave pudiera estar incrustada dentro del exe y deben ocupar exactamente el mismo espacio todas las cadenas que vayas a generar, o el exe puede quedar inutilizable, debera estar cifrada de alguna manera, y tu proceso de verificacion entenderla, porque sino tambien seria facil verla. con un editor. otra cosa es cuando se cambie de clave le envies otro ejecutable (que compiles ya con la clave).

Ademas de la MAC Address, se utiliza comunmente el numero de serie del disco duro, claro que esto implicas deficiencias a la hora de cambio de hardware, tampoco es 100% seguro :P

La opcion de validar a traves de un servidor web es la "ideal", y es por eso la que se ha puesto de moda implementar y se nota mucho por ejemplo en los antivirus (Panda,Nod,Avira etc..) aun asi no es 100% seguro ya que hay formas de enganiar a los programas para que se conecten a otro servidor, que pueda tener el algoritmo (no es que sea tan facil, pero es posible)

Claro lo importante es intentar hacer mas dificil la tarea, pero casi todo los metodos tienen una forma de saltarse, y depende que tan comercial y util sea el software para que mas cabezas intenten obtenerlo.



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================