Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2022
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Crear una protección shareware para programa hecho con Lazarus.

Hola a tod@s.

Estoy haciendo un programa en Lazarus y me planteo comercializarlo bajo una licencia shareware; del tipo que permite hacer una prueba con todas las posibilidades del programa durante 30 días de forma gratuita y luego, si se quiere seguir usando el programa con todas sus opciones activas, hay que pagar la licencia.

Desconozco qué es lo que hay que hacer.

El programa está hecho en Windows 10, con Lazarus 2.2.2 .

He hecho algunas búsquedas, sin resultado. He mirado en torry.net , y no he encontrado nada para Lazarus. Para Delphi sí que hay.

¿Alguien podría decirme dónde puedo encontrar información adecuada para ello o algún componente que lo permita?.

De antemano, muchas gracias.

Última edición por rrf fecha: 13-08-2022 a las 23:16:58. Razón: añadir información
Responder Con Cita
  #2  
Antiguo 14-08-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se me ocurren montones de formas de control, aunque elegir una depende mucho de hasta qué punto quieras controlar el uso de tu programa.
Quiero decir que a lo mejor no es tan necesario un control muy riguroso salvo que esperes muchísimos potenciales usuarios, y también habría que decidir si un mes es un tiempo lógico de prueba.
Puedes simplemente guardar la fecha de instalación en algún lugar y luego cada vez que se inicia el programa controlas si desde esa fecha han pasado los 30 días de prueba.
Si quieres "mucho" control puedes pensar que es posible que encuentren dónde está guardada esa fecha y la modifiquen manualmente, por ejemplo, pero aquí es donde empieza el gran bucle que nunca se acaba: tú controlas que no cambien esa fecha y el usuario encuentra la forma de cambiarla, tú guardas esa fecha cifrada y el usuario encuentra que eliminando el fichero puede saltarse la protección, tú controlas que no lo borren y el usuario cambia la fecha del ordenador cuando va a iniciar tu programa, tú controla que no hayan cambiado la fecha del ordenador y el usuario... y así hasta el infinito.
Puedes guardar un registro en la "nube" de algún dato del equipo del usuario junto la fecha de instalación, y cada vez que inicia el programa se comprueba ese registro en la "nube". Pero el usuario puede decidir desactivar su conexión a internet cuando vaya a usar tu programa, etc. etc. etc.
Por eso lo principal es ponerse un límite de hasta qué punto es tan necesario ese control y qué tan efectivo debe ser, dependiendo de tus objetivos, de a quién va destinado el programa, etc. etc. etc.
Responder Con Cita
  #3  
Antiguo 14-08-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Aquí mis dos centavos. Hace años que he venido utilizando lo descrito en este artículo de brandonstaggs.com, que, aunque parece un tanto antiguo, aún hoy día se sigue usando incluso con Delphi FMX. El artículo en cuestión proporciona un código base, pero, también ciertas ideas, que, probablemente, funcionen también en Lazarus.

Adicionalmente, tal vez pudieras encontrar algún software comercial que funcione en tanto en Delphi como en Lazarus. Otra posible opción acaso sean los componentes OnGuard, que, parecen estar disponibles también para Lazarus.

No obstante, con el suficiente interés, probablemente ninguno de estos sistemas puedan ofrecer una "protección al 100%", sobre todo por lo que comentas "[...] del tipo que permite hacer una prueba con todas las posibilidades del programa durante 30 días de forma gratuita [...]".

Personalmente, a mí me gusta esa filosofía, es decir, dejarle al posible cliente probar el programa con todas sus características, incluso sin límite de tiempo, pero, esto implica un problema irresoluble o difícil de solucionar (en mi conocimiento): puesto que lo que se descarga es el programa "completo", si se consigue "crackear", lo que se obtendrá será el programa completo también.

A mí me parece que la única forma de conseguir que nadie consiga "crackear" un programa completo es no ofrecer un programa completo. Es decir, no se trataría tanto de limitar nuestro programa con "nag screens" o con determinadas opciones deshabilitadas (pero cuyo código está ahí, una vez se consiguiesen habilitar las opciones), sino que se trata de ofrecer un programa que realmente no esté completo.

De este modo, si un "cracker" consigue saltarse las posibles limitaciones del programa, lo que no podrá hacer es "completar el programa". Algo así posiblemente pone las cosas más complicadas a los posibles clientes legítimos: porque no les estamos dejando probar el programa completo, y, sin embargo, como digo, es posiblemente la única forma de evitar que nuestro programa sea "crackeado" completamente.

Por lo tanto, siguiendo este razonamiento, los únicos que deberían obtener el programa completo deberían ser nuestros clientes legítimos. ¿Podrían estos clientes "subir" nuestro programa completo y que otros usuarios lo usasen? Podrían, desde luego. Hay cierta relación de confianza que acaso deba primar aquí, o, en todo caso, tal vez el programa completo también debería ser "licenciado" de alguna manera, a un cliente en particular, haciendo complicada su copia, pero, aquí estaríamos en lo de antes: si un programa está completo, se podrá "crackear", si hay suficiente interés, y, una vez hecho, lo que se obtiene es dicho programa completo.

Para terminar, yo sigo creyendo que nuestra preocupación debería ser al 100% o muy cercano a esta cifra cara a nuestros clientes legítimos. Está bien considerar estas opciones "anticopia" pero tampoco que esto implique ponérselo complicado a los posibles clientes legítimos. Hay muchas implicaciones en todo esto, por ejemplo, otra de mis "filosofías" es permitir a mis clientes que registren el programa sin límite de ordenadores: siempre y cuando se trate de sus ordenadores, esto es, no licencio mi software para ordenadores en particular, sino para clientes en particular: es lo que me gustaría que me ofreciesen a mí y es lo que yo ofrezco.

Quiero insistir por último en que acaso la única forma de protección 100% efectiva (no para clientes legítimos, que, probablemente no tengan los conocimientos suficientes como para "crackear" el programa) es no distribuir programas completos, sino, incompletos, de modo que, si llegan a ser "crackeados", realmente no tenga mucho sentido, pues, estarían "crackeando" sólo una parte del programa, por decirlo así, y, esto probablemente haga perder todo el interés en su "crackeo". En definitiva, la versión completa de nuestro programa sólo debería llegar a nuestros clientes legítimos y nunca ser la que cualquiera puede descargarse de nuestro sitio web.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 14-08-2022
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Muchísimas gracias, David.

Me has ofrecido lo que estaba buscando: pistas para encontrar la información.

Aún no he visto los enlaces que incluyes, aunque me pondré con ello en breve.

Por mi parte, a nivel personal, no aspiro a tener una protección 100% efectiva.

Creo que basta con que el grupo de usuarios con conocimiento medios tenga dificultad para hacer una copia del programa no autorizada. Con eso me basta.

Y asumo de que habrán casos en los que se copiará mi programa sin autorización; aunque espero que sea por parte de un grupo minoritario de usuarios.

Un saludo y muchas gracias de nuevo.
Responder Con Cita
  #5  
Antiguo 14-08-2022
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Smile

Desde el correo electrónico que me llegó, fuí redirigido directamente al mensaje de David, y no leí el de Casimiro.

Lo acabo de leer ahora y creo que he contestado en el mensaje anterior a su comentario acerca del nivel de protección al que aspiro: que mi protección ideal está dirigida a los usuarios con conocimientos medios.

Casimiro, las sugerencias que haces me han aportado posibilidades acerca de como implementar una protección básica, que podría hacer yo mismo.

Lo que posiblemente cumpliría de forma completa o casi completa, con mis aspiraciones.

Me ha gustado esa idea que aportas de guardar la fecha en el primer arranque del programa y usarla como referencia en el control del tiempo.

Muchísimas gracias.
Responder Con Cita
  #6  
Antiguo 14-08-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El OnGuard citado por [dec] lo tienes instalable desde los repositorios en el propio Lazarus.

Responder Con Cita
  #7  
Antiguo 14-08-2022
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Muchas gracias Casimiro.

No sabía que Lazarus tiene el servicio Online Package Manager. Le he dado un vistazo a lo que ofrece Online Package Manager y hay muchas cosas interesantes.

He instalado OnGuard, que crea una pestaña nueva con varios componentes y espero probarlo en esta semana.

Me ha sorprendido la precisión en la ayuda que me han dado los dos: Casimiro y David.

Muchas gracias.
Responder Con Cita
  #8  
Antiguo 14-08-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por rrf Ver Mensaje
Muchas gracias Casimiro.

No sabía que Lazarus tiene el servicio Online Package Manager. Le he dado un vistazo a lo que ofrece Online Package Manager y hay muchas cosas interesantes.

He instalado OnGuard, que crea una pestaña nueva con varios componentes y espero probarlo en esta semana.

Me ha sorprendido la precisión en la ayuda que me han dado los dos: Casimiro y David.

Muchas gracias.
¡No hay de qué!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 15-08-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Es un tema, que como comentáis, siempre depende de hasta que punto uno se quiera complicar la vida para complicársela al cracker. Hace ya muchos años, en los comienzos de los PC, había aplicaciones en diskette que se distribuían encriptadas y se desencriptaban al ejecutarse, necesitando arrancar el PC desde ese disco. De esta forma nunca se tenía el código final leyendo el diskette.

Basado en la encriptación del ejecutable para evitar el análisis del desensamblado del mismo escribí un tutorial, a modo de prueba de concepto, que se basó en encriptar el código compilado de una función vital para el funcionamiento de la aplicación a proteger. El tutorial comienza con un encriptado sencillo que en sucesivas fases de complicación termina convirtiendo la función en un shellcode encriptado. Solo la ejecución de la app y el conocimiento de la clave se desencriptación conseguirían hacer funcionar de forma correcta el programa. Por si es de interés y/o curiosidad os dejo el enlace: Encriptando funciones.


Saludos.
Responder Con Cita
  #10  
Antiguo 16-08-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por escafandra
Es un tema, que como comentáis, siempre depende de hasta que punto uno se quiera complicar la vida para complicársela al cracker.
Y al propio usuario legítimo... tu aportación es estupenda, y, puede ser de utilidad, sin duda, en muchos aspectos. Cuando se habla de que una solución así pudiera saltar alguna alarma de algún antivirus... ¿a quién complicamos la vida? ¿Al "cracker"? ¡No! Al propio usuario legítimo.

Podrían ponerse no pocos ejemplos. Antes se ha comentado que el programa podría hacer uso de internet para comprobar determinadas cosas, pero, eso crearía una dependencia de internet, y, de nuevo, ¿a quién puede perjudicar esto? Exacto: a un usuario legítimo que en un momento dado no disponga de internet.

De hecho podría perjudicarnos a nosotros mismos, porque, vamos a encontrarnos con la necesidad de "dar soporte" a usuarios legítimos descontentos que no van a entender en un momento dado que necesiten internet, o que tengan que lidiar con falsos positivos de antivirus, etc., etc.

Por otro lado, no estoy seguro de que si la solución que propones, escafandra, por otro lado ya digo que muy curiosa e interesante, sea exactamente lo mismo que "no dar el código completo". Con esto último yo me refiero, directamente, a tener dos versiones del programa: la incompleta y la completa.

Pero por versión incompleta me refiero exactamente a eso: por ponerlo sencillo, sería una versión de nuestro programa a la que directamente le faltase el formulario de opciones, por mencionar uno solo de los posibles formularios. No es que estuviese "escondido", es que dicho formulario (entre otros) no estaría, sencillamente.

Lo que no está, no se puede "crackear". De este modo, se trataría de que sólo los usuarios legítimos recibiesen el programa completo, con el formulario de opciones y cualquier otro formulario, que, no existirían en la versión incompleta. ¿El problema? En efecto, sin formulario de opciones, la "demo" de nuestro programa también sería incompleta.

Pero es acaso la única forma completamente efectiva de lograr que esa versión "demo" no fuese "crackeable", sencillamente, porque, no sería interesante "crackearla", de hecho no necesitaría de ninguna protección, porque, realmente, se trataría de un programa incompleto que no sería usable en absoluto.

Lo complicado aquí sería por lo tanto cómo lograr una versión "demo" de nuestro programa lo suficientemente completa como para permitir la prueba del programa, pero, sin dejar de ser una versión incompleta, distribuyendo la versión completa del programa sólo a los usuarios que hayan comprado dicha versión.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 16-08-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Distribuir una copia incompleta de prueba es una muy buena idea. Está claro que esa copia no merece el esfuerzo de romperla y, si se intenta, será frustrante puesto que nada había que romper. Pero no podemos desdeñar que al final el cracker pueda hacerse con una copia completa, procedente de un usuario legal y sobre ella realizar su trabajo. La cuestión termina siempre en el mismo punto: el valor que tiene la aplicación y el valor del trabajo para romperla. La diferencia entre ambas, más el valor añadido que le aporte al cracker la distribución de la aplicación pirateada a la que puede añadir malaware, va a condicionarlo todo.

El tutorial que propuse puede ocultar fuertemente código importante y frustrar al cracker, pero el origen de esa idea surgió más como un experimento que de la necesidad de protección de algo concreto. Podemos argumerntar y contraargumentar, será un ejercicio divertido, intersante y deportivo pero, ciertamente, ningún sistema garantiza la seguridad completa.


Saludos.
Responder Con Cita
  #12  
Antiguo 16-08-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
He comentado alguna vez que hace años en un proyecto "muy grande" se requirió un buen sistema de protección, se contrató a un experto en seguridad que había trabajado en algunos proyectos muy conocidos a nivel internacional y éramos 5 personas absolutamente dedicadas al sistema de protección. Se realizó muchísima investigación y pruebas, estuvimos 9 meses dedicados a eso, creíamos haber encontrado un sistema lo suficientemente seguro para que no lo "desprotegieran" y además no molestaba "demasiado" al usuario legítimo.
Se lanzó el proyecto haciendo publicidad del mismo en muchos medios de comunicación, incluido las más importantes y conocidas revistas de informática de la época. El gasto/inversión en publicidad fueron millones (de la moneda en aquellos años, a día de hoy, alrededor de un millón de euros). Pues bien, menos de una semana después, exactamente 5 días, encontramos en una conocida web de "cracks" una pequeña utilidad creada por un ruso que generaba claves válidas para nuestro programa, en todas las versiones y funcionando perfectamente.
¿Cómo lo hicieron? ni idea. Pero quedó claro que no valía la pena invertir tanto tiempo y dinero. Es mejor algo sencillo y que no sea molesto para el usuario legítimo.
Y como dijo cierta vez B.Gates: prefiero que copien mi programa a que usen el de la competencia.

Última edición por Casimiro Notevi fecha: 16-08-2022 a las 10:57:41.
Responder Con Cita
  #13  
Antiguo 16-08-2022
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Es mejor algo sencillo y que no sea molesto para el usuario legítimo.
Me ha sorprendido mucho la historia que cuentas... Y comparto la conclusión a la que llegaste.

Con relación a OnGuard para Lazarus, no lo he probado aún, aunque puede echarle un vistazo a la información que incluye y me sorprendió muy positivamente, porque incluye muchos ejemplos (que no he probado aún) y un manual en PDF de 125 páginas. Tiene el aspecto de un trabajo bien hecho.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi 7 Crear programa para crear conexión BDE Rockardo777 Varios 10 31-08-2017 11:45:31
aplicación lazarus hecho en virtual box no funciona en ubuntu kapcomx Lazarus, FreePascal, Kylix, etc. 20 08-03-2016 23:30:24
Lazarus para un programa muti lataforma?? aitorqrv Lazarus, FreePascal, Kylix, etc. 2 02-08-2011 21:00:36
Ejecutar un programa hecho en turbo c++ eljose C++ Builder 2 06-09-2007 19:36:05
Ejecutar mi programa hecho en Lazarus sobre Linux mr_pascale Lazarus, FreePascal, Kylix, etc. 9 11-08-2007 18:54:25


La franja horaria es GMT +2. Ahora son las 22:13:10.


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