Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Cómo evitar que una DLL se ejecute antes que cualquier otra cosa de mi programa? (https://www.clubdelphi.com/foros/showthread.php?t=91087)

Reasen 18-11-2016 18:50:10

Cita:

Empezado por dec (Mensaje 510959)
Hola a todos,

Realmente, yo no sé qué hacía este hombre en la DLL para "cracker" el programa. Me propuse descomprimirla (está comprimida con UPX si no me equivoco) y echar un vistazo, pero, la verdad, creo que no sabría manejarme. Lo que yo supongo es que, de alguna forma, el "cracker" puede cambiar cierta variable del programa que, en efecto, determina si está registrado o no lo está. Esta variable no debería valer "True" excepto si el usuario registra el programa con los datos de una licencia válida. Esta operación se realiza "online". Bueno, en realidad "online" se comprueba que la licencia introducida es válida, pero, nada más.

Ahora bien, mis programas no requiren del usuario que lo registren cada vez que lo utilizan, como es lógico y normal. Cuando se lleva a cabo la comprobación antes mencionada, si resulta correcta, se guarda en el PC del usuario un archivo de licencia cifrado por el programa. Quiere esto decir, que, al ejecutarse el programa, si existe dicho archivo y su contenido es el correcto, la variable en cuestión se torna "True" y el programa aparecerá registrado. Ahora bien, si conseguimos cambiar la mencionada variable al principio del programa, por ejemplo, si conseguimos ponerla a "True", el programa aparecerá registrado sin más.

Tal vez no ande lo dicho muy lejos de lo que el "cracker" hacía. Pero lo que dice el compañero Reasen va más allá. En efecto, si el programa descarga algo (ciertas cadenas de texto) de internet que al cabo le hace funcionarr bien, hasta que no se descarguen dichas cadenas no funcionará bien. ¿Podrá el "cracker" atacar el asunto de otro modo? A bote pronto se me ocurre que depende del uso de las "cadenas" descargadas... si dichas cadenas se usan, como en el caso de mis programas, para establecer cierta variable, entonces el "cracker" acaso podría igualmente establecer dicha variable.

Lo que me parece interesante es que dichas cadenas formen parte de alguna manera del código del programa... porque entonces no veo yo cómo se puede atacar eso... ahora bien, ¿no hay forma de ataque posible entonces? No digo eso, sino que a mí no se me ocurre ahora, pero, si el método en cuestión fuese infalible... ¿cómo es que no está extendido entre los programadores como tal método infalible? Aunque claro está que tampoco hace falta que fuese infalible: bastaría con dejar a determinados "crackers" fuera de juego ante el necesario ataque. En fin,... tal vez el compañero Reasen quiera dar algunos detalles más. :)

Como tú dices, es raro que ese método no sea hablado en ningún lado (o sea el único al que se le ha ocurrido), para mí eso garantiza una gran seguridad.


:rolleyes: Voy a abrir un tema en el foro al respecto mostrando algunos ejemplos, próximamente.

roman 18-11-2016 18:56:56

Cita:

Empezado por Reasen (Mensaje 510960)
:rolleyes: Voy a abrir un tema en el foro al respecto mostrando algunos ejemplos, próximamente.

^\||/ Eso sería estupendo!

LineComment Saludos

dec 18-11-2016 19:44:40

Cita:

Empezado por roman (Mensaje 510962)
^\||/ Eso sería estupendo!

LineComment Saludos

^\||/ ^\||/ ^\||/ ^\||/ ^\||/

Reasen 18-11-2016 19:49:54

Cita:

Empezado por roman (Mensaje 510962)
^\||/ Eso sería estupendo!

LineComment Saludos

Dicho y hecho.

Neftali [Germán.Estévez] 18-11-2016 20:03:02

Cita:

Empezado por dec (Mensaje 510959)
..si el programa descarga algo (ciertas cadenas de texto) de internet que al cabo le hace funcionarr bien, hasta que no se descarguen dichas cadenas no funcionará bien.

Hay que tener en cuenta que yo puedo no estar conectado a internet y el programa debe funcionar.

dec 18-11-2016 21:28:32

Hola a todos,

Cita:

Empezado por Neftali (Mensaje 510970)
Hay que tener en cuenta que yo puedo no estar conectado a internet y el programa debe funcionar.

Así es la verdad. Lo cierto es que ahora mismo registrar mis programas requiere de una conexión a internet... pero una vez validado el registro, ya no será necesaria dicha conexión. No es igual que no requerir conexión a internet en absoluto, pero, en fin, al fin y al cabo mis programas se compran a través de internet... por usuarios de internet... pero es cierto que no compruebo ni se me ocurre (al menos ahora mismo) comprobar el registro a cada ejecución del programa.

roman 18-11-2016 23:30:33

Me conecto, luego existo.

LineComment Saludos

dec 19-11-2016 10:56:28

Cita:

Empezado por roman (Mensaje 510984)
Me conecto, luego existo.

LineComment Saludos

Algo así... pero te queda existir fuera de todo esto... ¡y anda que te ibas a aburrir!

P.D. Pesimista: pero es que internet... es MUCHO internet...

Neftali [Germán.Estévez] 21-11-2016 09:40:49

Cita:

Empezado por dec (Mensaje 510979)
Lo cierto es que ahora mismo registrar mis programas requiere de una conexión a internet... pero una vez validado el registro, ya no será necesaria dicha conexión.

Eso es lo habitual. Requerirla al registrar, pero que no sea necesarios de forma constante.

dec 21-11-2016 10:08:01

¡Hola a todos!

Cita:

Empezado por Neftali (Mensaje 511051)
Eso es lo habitual. Requerirla al registrar, pero que no sea necesarios de forma constante.

Así es. De hecho todo esto comenzó no por evitar a los "piratas", sino porque, tras años sin hacerlo, por fin reuní todas las licencias de mis programas en una base de datos. Esto daba pie a poder validar las licencias "en línea", pero, también a ofrecer también "en línea" algunos otros servicios a mis clientes: posibilidad de adquirir actualizaciones, descarga de licencias, en fin, lo que se nos pueda ocurrir alrededor de la base de datos en cuestión. Todo esto es es muy viejo, ciertamente, pero ahí estoy yo reinventando la rueda una vez más. :D :D


La franja horaria es GMT +2. Ahora son las 23:19:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi