Protect for Delphi
Protect for Delphi Component, by Reinaldo Yañez Arrey.
Copyright © 2000 Reinaldo Yañez Arrey.
Todos los derechos reservados.
rya@labs.df.uba.ar
 
Version 2.0 - Build 1.  11/2000
 
 
 
Protect for delphi (V2.0) es un componente Delphi nativo que permite proteger programas contra piratería. Forma parte de un sistema de protección y registración que permite validar en forma remota las copias de un programa ejecutable y administrar el proceso de registración. La versión 2.0 es ahora compatible con Windows NT, Windows 2000, Windows 95 y Windows 98. 
Como características distintivas Prot4Delphi provee máxima seguridad, no esconde ningún tipo de información en registry y cuenta con la posibilidad de activar diversas capacidades del programa protegido en registraciones sucesivas, cada una de ellas con una fecha de caducidad determinada. Esto facilita al desarrollador la posibilidad de habilitar gradualmente ciertas opciones de su software, a medida que el usuario lo requiera. Permite habilitar/deshabilitar hasta 32 opciones independientemente, permitiendo la creacion de niveles de seguridad de manera muy sencilla.
El sistema protege ejecutables diseñados para correr bajo los sistemas operativos Windows 95, Windows 98, Windows NT y Windows 2000 y es muy simple de utilizar. No hace falta distribuir archivos del tipo .vxd ni .sys, ya que están codificados internamente.  Permite hacer múltiples backups del programa protegido que corren solo en la computadora donde se registro el ejecutable. El usuario no tiene que pedir otra clave si reformatea su disco rigido/actualiza su sistema operativo y reinstala el programa protegido !!! 
Nuevo ejemplo que demuestra el uso de niveles de seguridad. 
Versiones incluidas para  Delphi 4 and Delphi 5 en este paquete, con instrucciones de instalación verdaderamente simples. Documentación completa en dos lenguajes: Inglés y Castellano.  
Compre en linea utilizando un formulario privado y seguro.
 
 



La siguiente terminologia se utilizará a lo largo del documento:

Sección rápida:

Esta seccion lo guía paso a paso para una puesta en marcha rápida. Si usted desea proteger su programa contra copia y luego leer la documentación del sistema, esta sección podrá ser de ayuda. Lea cada una de las preguntas en orden y realice los pasos indicados.
 

Que requiero para instalar el componente ?

  Sistema operativo Windows 95, Windows 98, Windows NT, Windows 2000 instalado.
  4 Mb de espacio disponible en el disco rígido.
  Delphi 4 o Delphi 5    instalado..
 

Como instalar el componente ?

1) Descomprimir el paquete de instalación (Prot4Dph.zip) a algun directorio,
por ejemplo a C:\Protect4Delphi\

2) Instalar el componente en la paleta.
 
   Delphi 4:
     Desde Delphi IDE,
     menu -> Components -> Install Packages -> 'Add'
     abrir  \Bin\Delphi4\Protect4DelphiV40Demo.bpl
     (o bien \Bin\Delphi4\Protect4DelphiV40Full.bpl)
    El componente deberia ir a la paleta de componentes.

   Delphi 5:
     Desde Delphi IDE,
     menu -> Components -> Install Packages -> 'Add'
     abrir  \Bin\Delphi5\Protect4DelphiV50Demo.bpl
     (o bien \Bin\Delphi5\Protect4DelphiV50Full.bpl)
    El componente deberia ir a la paleta de componentes.

3) Agregar el path de instalacion al "Library Path"  de Delphi.

   Delphi 4 & Delphi 5:
     Desde Delphi IDE hacer: Tools->Environment options->Library.
     Presionar el boton marcado con (...) del item "Library Path:"
     Escribir el path completo de instalacion y presionar el boton 'Add'.

 

Notas sobre instalación en Delphi 5
 
 
Dependiendo de la configuración actual, puede obtener el siguiente error mientras compila un programa protegido con Protect for Delphi (Unicamente se da este error en Delphi 5) 

[Fatal error]: File not found 'DsgnIntf.dcu' 

Se puede solucionar haciendo lo siguiente: 
Es preciso copiar las units DsgnIntf.pas y Marks.pas del directorio Borland\Delphi5\Source\ToolsApi al directorio Borland\Delphi5\Lib 
Este procedimiento remediará el error, pero por favor tome unos instantes para leer el archivo readme.txt que viene con Borland Delphi 5.

 

Contenido del paquete de instalación:

\Bin
    KeyGenerator.exe                                  (Generador de claves)
\Bin\Delphi4
    Protect4DelphiV40Demo.dpk
    Protect4DelphiV40Demo.bpl
    Protect4DelphiV40Demo.dcp
    Protect4DelphiV40Demo.dcu
    Protect4DelphiV40Demo.res
    Protect4DelphiV40Demo.dof
\Bin\Delphi5
    Protect4DelphiV50Demo.dpk
    Protect4DelphiV50Demo.bpl
    Protect4DelphiV50Demo.dcp
    Protect4DelphiV50Demo.dcu
    Protect4DelphiV50Demo.res
    Protect4DelphiV50Demo.dof

  - all versions include -
  UProt4DelphiDefs.dcu
  Prot4Delphi2.dcu
  Prot4Delphi3.dcu
  Prot4Delphi4.dcu
  Prot4Delphi5.dcu
  Prot4Delphi6.dcu
  Prot4Delphi7.dcu
  Prot4Delphi8Cipher.dcu
  Prot4Delphi8KeySchedule.dcu
  Prot4Delphi8SBoxes.dcu
  Prot4Delphi8StaticTable.dcu
  UProt4Delphi.dcu
  UProt4DelphiDefs.dcu
  UDefaultRegistration.pas
  UDefaultRegistration.dfm

\Doc
  Protect for Delphi (English).htm           (Hipertexto. Documentacion, Inglés)
  Protect for Delphi (Spanish).htm          (Hipertexto. Documentacion, Español)
\Demos\Standard
  Main.pas
  Main.dfm
  UDefaultRegistration.pas
  UDefaultRegistration.dfm
  Simple.dpr
  Simple.res
\Demos\Custom
  Main.pas
  Main.dfm
  Custom.dpr
  Custom.res
  MyID0010857.uid
\Demos\UnlockLevels
  Main.pas
  Main.dfm
  Readme.txt
  UnlockLevelsDemo.dpr
  UnlockLevelsDemo.dof
  UnlockLevelsDemo.cfg
  UnlockLevelsDemo.res

 

Como proteger un ejecutable en pocos pasos?

Es muy sencillo, bastan los 3 pasos siguientes :
 

     
    MiProyecto7345h 
    OtroProyectoMio 
    AnotherValidAppKey
    UnSoftwarePara247Perez
     
           (Más adelante puede ver informacion adicional acerca de este punto)  

Como se distribuye el programa protegido ?
 

Que ve el usuario al correr el programa protegido ?
  Como genera el desarrollador la clave de registro ?
Figura 2
 

El generador de claves requiere

   

Como debe utilizar el usuario la clave de registro ?
 

Como se pueden obtener distintos niveles de bloqueo del programa protegido ?

           Es posible habilitar diferentes niveles de bloqueo mediante el uso de la sección "Additional features" del generador de claves. Este puede generar diferentes claves para cada grupo de opciones soportadas, como fue explicado anteriormente. El componente exporta la lista de opciones soportadas mediante la propiedad SupportedCapabilities
Esta propiedad puede ser leida por el programa en tiempo de ejecución, para poder tomar acciones específicas por cada opcion soportada/no soportada.

Tiene Protect for Delphi soporte multilenguaje ?  

He tenido problemas con las instrucciones.
Donde puedo ver ejemplos funcionando ?
 

Los ejemplos (que deberian compilar sin problemas) están en las carpetas:

\Demos\Standard     (Directorio de ejemplo standard)
 Simple.dpr              (Proyecto standard)
\Demos\Custom       (Directorio de ejemplo más complejo)
 Custom.dpr             (Proyecto más complejo)
\Demos\UnlockLevels
 UnlockLevelsDemo.dpr  (Proyecto que demuestra el uso de niveles de seguridad)

Para abrirlos: en Delphi hacer (menu) File -> Open -> (ir a la carpeta donde se ha instalado el componente) -> (seleccionar uno de los directorios indicados arriba) -> (seleccionar el archivo de proyecto) -> OK u Open.
Compilar y correr con F9
 
 

Cual es el método de pago para obtener Protect for Delphi ?
Se ofrece soporte y futuras actualizaciones ?

Los métodos de pago disponibles son tarjeta de crédito o transferencia de dinero.
Existen dos opciones de registro:

 1)  Versión Full. (componente, generador de claves, generador de IDs)
       Funcionalidad total. Solo es necesaria la registración del generador de claves y de IDs.
       Se obtienen ofertas especiales a muy bajo costo para futuras actualizaciones.

2)  Nuevo !!!
     Versión Full con codigo fuente. (componente, generador de claves, generador de IDs,     +Codigo Fuente !!!)
     Funcionalidad total. Incluye código fuente !!!
     Se obtienen dos meses de soporte técnico gratuito, y actualizaciones gratuitas por un año.
 

Para registrar Protect for Delphi:
 

Via GetSoftware:

            http://www.getsoftware.com/cgi/products.gs?vendor=346
            http://www.getsoftware.com/cgi/products.gs?vendor=346

 o directamente a la opcion 1)

            http://www.getsoftware.com/cgi/info.gs?productid=2607
            http://www.getsoftware.com/cgi/info.gs?productid=2607
 
 
 


Sección adicional:
 

>> Usted puede saltear esta parte. La explicacion del funcionamiento interno provee una pauta de la confiabilidad del sistema, pero no leer esta sección no debería impedir su uso <<
 

Notas acerca de Windows NT, Windows 2000 Documentación de las propiedades del componente:
  Descripción breve de las propiedades del componente:

Métodos

 

Propiedades

 

Generando identificadores de autenticidad:
 

 

La solución: Identificadores de autenticidad
 

Como genero los identificadores de autenticidad ?
 
IDGenerator looks like
 
 

Este generador requiere:

 


DISCLAIMER y LEGALES 
Este software no tiene ninguna garantia de funcionamiento implícita o explicita por parte del autor. 
El uso de este software es bajo cuenta y riesgo de los usuarios. 
El siguiente paquete de distribuición puede ser copiado con propósitos de evaluación, mientras no sea modificado en ninguna de sus partes y sea distribuido como un conjunto.  (solo se apilca a la versión de demo) 
Bajo ninguna circunstancia es posible la venta de este software (o cualquiera de sus partes) sin el consentimiento escrito del autor. 
La presente nota se refiere unicamente a la version de demostración, por favor lea la sección de registro para obtener mas información sobre este punto. 
El uso de este software implica la aceptación de los puntos anteriores. 
Reinaldo Yañez Arrey se declara único propietario de los derechos de autor de este software. 

 
 
 
 

Notas adicionales:
 

(C)opyright  2000, Reinaldo Yañez Arrey.
Buenos Aires, Argentina.
rya@labs.df.uba.ar
ryaayr@yahoo.com
 
 
 

IMPORTANTE: Limitaciones de la versión demo:
 

1) El paquete de instalación para la versión demo NO incluye el programa generador de identificadores únicos.

2) Los mensajes de 'registrado', 'no registrado' aparecen con el siguiente texto adicional que no puede removerse:

This program was copy protected using a Demo version of Protect for Delphi
A protection of this kind is NOT ALLOWED for commercial use.
(C)opyright 2000, by Reinaldo Yañez.
e-mail: rya@labs.df.uba.ar, ryaayr@yahoo.com

3) En el entorno de Delphi, al abrir cualquier proyecto que contenga un componente del tipo TProt4Delphi, aparecerá un mensaje con el texto:
'Reminder: Prot4Delphi component is NOT registered.'
el mensaje se repite cada 30 segundos.

4) La property CheckSecurityEachNSeconds se ha desconectado.
    La seguridad se verifica cada 60 segundos.

5) La property SupportedCapabilities retorna correctamente solo las 2 primeras características (Características Número 0 y Numero 1). Las demás se retornan como NO SOPORTADAS. En el generador de claves sólo se puede utilizar estas 2 características.
 
 

(C)opyright  2000, Reinaldo Yañez Arrey.
Buenos Aires, Argentina.
rya@labs.df.uba.ar
ryaayr@yahoo.com
 
 

Acerca del autor:

 Actualmente soy estudiante de ciencias fisicas de la UBA. Trabajo para una empresa de programación que se dedica principalmente al desarrollo de software en el area seguros. En el trabajo programo principalmente en Delphi y C. Para mis proyectos, en Delphi, C, C++ y assembler.
Mi direccion de e-mail es rya@labs.df.uba.ar, ryaayr@yahoo.com
Con respecto al sistema que presento, hice hace varios años una version para DOS que directamente encriptaba el codigo del ejecutable (ya compilado).
Cuando me pasé al extraordinario Delphi (dicho sea de paso) quedó pendiente el tema de la distribución de mis propios programas. Ya no me era posible pasarlos sin algun temor. (Me gusta que se respete el Copyright)
De esa necesidad propia surgió este componente que en el estado actual es mas que robusto.

Quisiera agradecer especialmente a Alexander Weitzman, quien me proporcionó código freeware y soporte que me ayudó muchísimo para hacer funcionar el componente bajo Windows NT.
Pido disculpas por la documentación un tanto mal diseñada (me doy cuenta un poco tarde), pero no tengo demasiado tiempo para arreglarla. Espero que de todas formas sea de ayuda.

Para los "especialistas": el componente utiliza encripción segura de nivel industrial. El paquete de encripción es un block cipher de 64 bits de datos y 384 bits maximos de clave. Tiene 128 Kbytes de S-BOXES randomly generated. (Y si, no creo demasiado en las human-made S-BOXES !!)
 

(C)opyright  2000, Reinaldo Yañez Arrey.
Buenos Aires, Argentina.
rya@labs.df.uba.ar
ryaayr@yahoo.com