Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Distribución de aplicaciones de prueba (https://www.clubdelphi.com/foros/showthread.php?t=91438)

wilcg 07-02-2017 03:39:41

Distribución de aplicaciones de prueba
 
Hola amigos del foro,
Me he visto en la necesidad de implementar en mi aplicación un periodo de prueba, para que el cliente pueda usar la aplicación sin ninguna restricción por un periodo de tiempo. Pero tengo dudas sobre la fiabilidad de la protección y el código que utilice cumpla con lo encomendado y no falle y vaya en contra de mis intereses.
Para esto estoy usando un código en el VIEW SOURCE del proyecto que funcione dentro de un rango de fechas. Y quisiera saber la opinión de los expertos si esto es fiable y seguro o existe otra manera mas segura de implementarlo. Espero su ayuda...

Código Delphi [-]
program MiPrograma;

uses
  Forms,
  Windows,
  Classes,
  SysUtils,
  Registry,
  Graphics,
  TaskDialog,
  uPrincipal in 'Sistema\Principal\uPrincipal.pas' {FPrincipal},
  uDBConexion in 'Sistema\Conexion\uDBConexion.pas' {DBConexion: TDataModule},

{$R *.res}
var
  FInicio, FFin :TDateTime;
  AvisoErrores: TAdvTaskDialog;
begin
  FInicio := StrToDateTime('01/02/2017');
  FFin := StrToDateTime('28/02/2017');
  AvisoErrores := TAdvTaskDialog.Create(Application);

  if (Now >= FInicio) AND (Now <= FFin) then
  begin

  end
    else
  begin
    with AvisoErrores do
    begin
      Clear;
      Title := 'Error';
      Icon := tiError;
      CommonButtons := [cbOk];
      CustomButtons.Clear;
      DefaultButton := 0;
      Instruction := 'No se puede iniciar MiAplicación V 1.0';
      Content := 'El periodo de prueba a terminado.';
      ExpandedText := 'La Licencia era válida hasta el 28/02/2017.';
      ExpandControlText := 'Pulse para ocultar';
      CollapsControlText := 'Pulse para ver más';
      FooterIcon := tfiWarning;
      Footer := 'Contacte con ---@hotmail para adquirir la versión completa.';
      Options := [doHyperlinks];
      Execute;
    end;
    Halt;
  end;

  AvisoErrores.Free;

  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  //Application.HelpFile := 'C:\MiCarpeta\Ayuda.chm';
  Application.Title := 'MiPrograma V 1.0';
  Application.CreateForm(TDBConexion, DBConexion);
  Application.CreateForm(TFPrincipal, FPrincipal);
  Application.Run;
end.

MAXIUM 07-02-2017 04:53:58

Claramente el nivel de dificultad para crackear tu aplicación es 0 (cero).

Pero como alivio te puedo decir:
1° Dudo que tu posible cliente tenga siquiera algún conocimiento al respecto.
2° Las más grandes empresas de video juego invierten millones en sistemas de protección. Menos de una semana se demoraron en crackear Resident Evil 7 con una de las protecciones más seguras hasta la fecha.

En su momento use esta excelente componente gratuito:
Protección con contador de usos: http://delphiallimite.blogspot.cl/20...otector-1.html
Protección con contador de días: http://delphiallimite.blogspot.cl/20...otector-2.html

kurono 07-02-2017 05:16:27

te recomiendo que hagas un contador en tu aplicacion ya que alguien puede cambiar la fecha de sistema antes de iniciar el programa y usarlo

mamcx 07-02-2017 14:22:30

Es mucho mejor usar un componente probado, aun si ese componente es "facil" de crakear. No es buena idea "inventarse" la seguridad sin haber adquirido los conocimientos adecuados.

--
He linkeado varias veces este articulo:

https://www.codeproject.com/kb/archi...ialwisdom.aspx

Que explica como afrontar de forma racional el tema de la pirateria y en que realmente enfocar esfuerzo.

wilcg 07-02-2017 17:39:19

Gracias amigos por aclararme las dudas, estaba convencido que el nivel que estaba suponiendo era un 2.5 de 10,
pero MAXIUM me matas con la noticia y como dice kurono es un gran error hacerlo de esta manera porque alguien podría cambiar las fechas y la aplicación se ejecutaría sin problemas.
es mejor usar un componente probado como dice mamcx para agregarle un poco de dificultad, ya que se sabe que nada es irrompible.
estoy usando Delphi Berlin algún componente como sugerencia para esta versión si es libre mucho mejor.

newtron 07-02-2017 19:50:39

Igual suelto una tontería pero ¿no podrías evaluar la posibilidad de limitar el número de registros de alguna tabla importante? de esa forma no hay problemas de fechas y te aseguras de que no se va a usar el programa de forma intensiva.

Saludos

Luis M. 07-02-2017 21:06:54

Cita:

Empezado por newtron (Mensaje 513011)
Igual suelto una tontería pero ¿no podrías evaluar la posibilidad de limitar el número de registros de alguna tabla importante? de esa forma no hay problemas de fechas y te aseguras de que no se va a usar el programa de forma intensiva.

Saludos

Pues no lo veo como tontería.
Yo lo he utilizado en alguna ocasión y me ha funcionado bien.
Otra de las cosas que hacía, en algún programa de facturación, era qué no imprimiese la factura si la fecha había caducado.
Como lo controlaba:
Al arrancar el programa cogía la fecha del sistema y la comparaba con la fecha mayor introducida en la factura.
Si la fecha de la factura era mayor que la fecha del sistema, salía un mensaje de aviso y el programa se cerraba.
Cuando dabas de alta o modificabas una factura no dejaba poner en la fecha de factura, una fecha superior a la del sistema.

Más o menos, esa es la idea.
Un saludo.


La franja horaria es GMT +2. Ahora son las 22:06:20.

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