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 1.0 - Build 4.  4/2000
 
 
 
Protect for delphi 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. 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 y Windows 98, y es muy simple de utilizar. No hace falta distribuir archivos del tipo .vxd, el .vxd esta codificado internamente.  El bug que ocasionaba el crash de la aplicación bajo algunas configuraciones se ha eliminado. 
Permite hacer multiples backups del programa protegido que corren solo en la computadora donde se registro el ejecutable. El usuario no tiene que pedir otra clave si reformate su disco rigido y reinstala el programa protegido !!! 
Nuevo ejemplo que demuestra el uso de niveles de seguridad. 
Nuevo!! Versiones incluidas para  Delphi 3, 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 o Windows 98 instalado.
  4 Mb de espacio disponible en el disco rígido.
  Delphi 3 o 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 3:
     Desde Delphi IDE,
     menu -> Components -> Install Packages -> 'Add'
     abrir  \Bin\Delphi3\Protect4DelphiV30Demo.dpl
     (o bien \Bin\Delphi3\Protect4DelphiV30Full.dpl)
    El componente deberia ir a la paleta de componentes.
 
   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 3:
     Desde Delphi IDE ir a: Tools->Environment options->Library.
     Agregar a mano el directorio de instalacion al path. Presionar el boton 'OK'.

   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'.

 

Contenido del paquete de instalación:

\Bin
    KeyGenerator.exe                                  (Generador de claves)
\Bin\Delphi3
    Protect4DelphiV30Demo.dpk
    Protect4DelphiV30Demo.dpl
    Protect4DelphiV30Demo.dcp
    Protect4DelphiV30Demo.dcu
    Protect4DelphiV30Demo.res
    Protect4DelphiV30Demo.dof
\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.
 

Usted tiene dos opciones para registrar Protect for Delphi:
 

Via RegNet - The Registration Network usando cualquiera de estos metodos

     https://secure.reg.net/product.asp?ID=7257 
                           Regnet #: 7257
                           On the web -  http://www.reg.net
                           By Phone - 1 800 WWW2REG (1 800 999-2734) or (661) 288-1827
                           By Fax - 1 (661) 288-1867
 

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/verify.gs?cart=1554
            http://www.getsoftware.com/cgi/verify.gs?cart=1554


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 <<
 

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. 
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 de gestión y control. En el trabajo programo principalmente en Delphi y C. Para mis proyectos, en Delphi, C, C++ y assembler.
Mi direccion fija de e-mail (por el momento :)  es rya@labs.df.uba.ar
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. El unico problema es que no tengo demasiado tiempo para diseñar el driver para hacerlo funcionar en Windows NT.
Pido disculpas por la documentación un tanto mal diseñada (me doy cuenta un poco tarde), pero pronto comienzo a estudiar para los finales de la facultad y no tengo tiempo de 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