Capítulo I: Génesis... V1.2

 

 

1.- Saludos

 

Tras un breve periodo de Letargo por mi parte, vuelvo a las andadas con otro Tutorial, pero éste, no irá orientado a ningún programa en concreto, sino a la creación de los llamados KeyGens...

 

Ya hemos inaugurado nuestra Web, y poco a poco la iremos actualizando, si queréis visitarla: http://pagina.de/Kfor

 

No sé de cuantas partes constará éste tutorial, de momento empiezo con ésta, y si tiene aceptación y lo consideráis interesante ya iré sacando otras; así, estoy abierto a sugerencias, y a críticas constructivas. Para contactar conmigo, mi dirección es: raziel@telepolis.com

 

¿Porqué este tutorial?, veréis, cuando me inicié en esto de los KeyGens de forma seria, o los manuales estaban en Inglés, o todos estaban orientados a ASM, o simplemente, no entendía nada de lo que intentaban decir, debido, a que mis conocimientos a nivel de programador no eran suficientes.

 

Así, también explicaré por encima cosas muy básicas, y pondré ejemplos de las cosas mas importantes así como ejercicios para que practiquéis, el nivel de dificultad no será muy elevado, puesto que no soy ningún maestro en esto, pero espero, que al menos le perdáis miedo a este campo del Cracking.

 

2.- Herramientas Necesarias

 

Para poder hacer un KeyGen nos harán falta las siguientes herramientas:

 

·         Papel

·         Lápiz

·         Ganas de Aprender...

·         Tener Claro, las distintas formas en las que podemos obtener un dato (Hexadecimal, Decimal, Byte...)

·         Dos Lenguajes de Programación (Vamos a usar tanto Delphi 3.0 como Visual Basic 5.0).

·         Paciencia

·         Sentido común.

 

¿Porqué Delphi y Visual Basic?, veréis, ambos se complementan, quiero decir con esto, que mientras uno aporta un código  fácil, intuitivo y menos rígido, el otro es rápido, fiable y ocupa menos espacio… (esto siempre bajo mi punto de vista, claro está).

           

                        Llamaremos a Delphi (D) y a Visual Basic (VB) para mayor comodidad...

 

3.- Algo de programación

 

            Comentario Sabroso: Si ya sabéis cómo se declaran Variables, las diferencias entre VB y D en cuanto a la Sintaxis y demás;  salta a la parte práctica; ¿OK?

 

3.1 Algo de Sintaxis

 

Tanto en D como en VB, las llamadas ventanas que moldeamos a nuestro antojo, reciben el nombre de Formularios (Forms); sobre los cuales podemos asentar infinidad de controles. Pues bien, a su vez, cualquiera de éstos objetos poseen numerosas propiedades, que podemos modificar a nuestro antojo, ya sea el tamaño de una ventana, si un botón está activo o no…

 

Para modificar dichas propiedades, es necesario hacerlo de una determinada manera.

 

Ejemplo para VB:

 

            Form1.Caption= 2000-1500 

 

Siendo:

 

·         Form1: El nombre del objeto, en este caso es un formulario cuya propiedad vamos a modificar…

·         El Punto.’ Indica que citamos una Propiedad de dicho Objeto (Form1).

·         Caption: La propiedad que modificamos del Objeto... (ésta en concreto modifica el nombre del Form1)

·         El Igual indica que lo siguiente se asigna (ya sea número, texto...) a la propiedad que tratamos en ése instante (Caption)

·         Las comillas, dependiendo de su uso se asignarán unos u otros Valores:

 

o        Ejemplo I

 

§         Form1.Caption= “2000-1500” > Asigna a la Propiedad Caption de Form1 la cadena de texto

“2000-1500”

 

o        Ejemplo II

 

§         Form1.Caption= 2000-1500 > Asigna a la Propiedad Caption de Form1 el resultado de la operación 2000-1500 (es decir, 500) y no se asignará como cadena sino como Valor numérico.

 

Comentario Sabroso: Existen Ligeras diferencias entre VB y D en las sintaxis que pueden dar lugar a error; empezaremos con una sencilla tabla...

 

Comando

Visual Basic

Delphi

Asignador a Variables y a Propiedades

=

:=

Asignador a Costantes y uso en Bucles

=

=

Indicador De valor Asignado

“ ”

‘ ’

Referencia a Controles...

Form1

Form1

Cómo nos lo muestra el Compilador

Form1

Tform1

A final de instrucción se pone

(Nada)

;

 

Veamos el contraste en la práctica

 

Visual Basic

Delphi

Form1.Caption=”Key”

Form1.Caption:= ‘Key’;

 

 

 

3.2 Los tipos de Datos

 

Los tipos de Datos que usaremos en ambos lenguajes NO diferirán unos de otros en nada, excepto en las declaraciones, puesto que en D, antes de usar alguno has de “decírselo” a D, mientras que en VB, no es obligatorio hacerlo, pero advierto que sino lo hacéis de forma ordenada, podéis terminar con un lío tremendo...

 

·         Integer

·         String

·         Bolean

·         Arrays

·         ...

 

Sino conocéis alguno de éstos tipos de datos; por favor coged un libro de programación y miradlos, pues no creo que sea necesario que me detenga aquí mucho tiempo...

 

3.3 Declarando Variables y Constantes, Asignando valores a las mismas

 

Importante: En Ambos lenguajes, la tilde “´” no puede usarse en nombres, ya sean de variables u objetos, puesto que el compilador detectará error (estáis avisados).

 

·         3.3.1 En Visual Basic

 

Imaginemos que estamos dentro del código de un botón(Command1);  En VB, por ejemplo, para declarar dos Strings, un Integer y una Constante pondríamos:

 

Private Sub Command1_Click()

Dim Cadena As String, Cadena2 As String, Numero As Integer, Constante1 As Integer

Cadena = “Hola

Constante1 = 2
End Sub

 

La primera línea marcada de Azul, nos indica que estamos dentro de un procedimiento (Concretamente dentro de un botón llamado Command1, cuyo código se ejecutará cuando hagamos Click sobre él).

 

La última línea Azul, indica que es el final del procedimiento.

 

La declaración de las variables se hace con Dim, seguido del nombre de la variable, declaramos el tipo (As String...)

La declaración de constantes no se diferencia de la declaración de variables, se hacen de forma idéntica.

 

La tercera línea, nos indica que la variable Cadena, se inicializa con la palabra Hola introducida...

 

·         3.3.2 En Delphi

 

            El mismo ejemplo en D:

 

Procedure TForm1.Button1Click(Sender: TObject);

var                                           Grupo 1

Cadena, Cadena2: String;

Numero: Integer;

begin                                       Grupo Principal

 // Código Del Programa //

end;

end.

 

El procedimiento en D, digámoslo así; se divide en grupos. Por un lado, está (El grupo principal), que lo engloban las palabras begin (Inicio) y end; (Fin) entre ambas palabras va todo el procedimiento en cuestión, ya sean bucles...

 

Para declarar variables hemos de crear otro grupo denominado var Aquí, al igual que con VB, hemos definido las tres variables Cadena, Cadena2 y Numero, (Tened en cuenta los signos : y ;)

 

                        Y las letras en Azul, cumplen exactamente la misma función que en VB...

 

Ahora bien... aquí, las constantes, al contrario que en VB no pueden declararse en el mismo lugar que las variables, para ello, hemos de crear otro grupo; Ej:

 

const

Constante1 = 2;

var

// Las que sean //

begin

// Lo que sea //

end;

 

¿Véis?, hemos creado otro grupo llamado const, fuera de begin y de var que engloba las constantes que hemos definido; pero ¡OJO! que las constantes se declaran tan sólo con un “=”, no con “:=”.

 

            3.4 Manipulación de Cadenas

           

Básicamente, los Programas a la hora de evaluar un Serial; operan hasta la saciedad y de distintas formas (según la imaginación del programador); pues bien, obviamente manipulará nuestro Serial para hacer ciertas comprobaciones, entre estas manipulaciones, por ejemplo pueden encontrarse:

 

Pasar a código ASCI, sumar, restar, coger, verificar ciertas condiciones...

 

            Imaginemos una cadena de Texto llamada Cadena; que contiene por ej: “El número de la loto es el 1234”.

                       

·         3.4.1 En Visual Basic

 

Las instrucciones básicas para la manipulación de Cadenas son:

 

            Sintaxis:

 

§         Longitud de la cadena

 

Len(Cadena) > Nos da la longitud de la cadena, en nuestro caso el valor será: 31 (Espacios incluidos)

           

Len(“Cadena”) > Nos de la longitud de lo que hay entre “ ” (el valor devuelto será: 6)

 

§         Extraer Caracteres (Por la izquierda o Por la Derecha, o uno en concreto)

           

            Left(Cadena, N) > Indica a VB que extraiga N Caracteres por la izquierda

Así si N es igual a 2, devolverá: “El

                       

Left(“Cadena”, 2) > Devolverá “Ca

           

Right(Cadena, N) > Indica a VB que extraiga N Caracteres por la derecha

Así si N es igual a 2, devolverá: “34

 

Right(“Cadena”, 2) > Devolverá “na

 

Mid(Cadena, X, Y) > Siendo X la posición a partir de la cual comenzará a extraer caracteres e Y el número que extraerá a partir de dicha posición.

 

Mid(Cadena, 1, 2) > Extraerá: “El

 

Mid(“Cadena”, 1, 3) > extraerá: “Cad

 

·         3.4.2 En Delphi

 

§         Longitud de la cadena:

 

StrLen(pchar(Cadena); > Devolverá: 31

 

§         Extraer Caracteres en concreto (Mas sencillo que en VB)

 

Cadena[X]; > Siendo X el número de carácter a Extraer, hemos de tener en cuenta, que aquí, al igual que cuando trabajamos con Arrays; existe la posición 0 que corresponde al inicio de la cadena, en nuestro caso a: “E

Cadena[2]; > Extraerá: “l

 

            Es todo por el momento en cuanto a instrucciones básicas...

 

            3.5 Bucles

 

Para ambos lenguajes de programación, los bucles son semejantes, lo que ocurre, es que mientras en VB se declaran “imediatamente, en D, has de sudar un poco más.

 

o        Ejemplo de Bucle en VB

 

If Len(Licensecode) = 0 Then

MsgBox ("Por favor rellena la casilla de texto")

GoTo Salir

 

o        Bucle semejante en D

                       

                        If strLen(pchar(Licensecode)) = 0 Then

begin

Showmessage ('Por favor rellena la casilla de texto');

exit;

end;

 

            ¿Véis las diferencias entre uno y otro?, pues bien... ahora pasemos a la práctica, pero vosotros, no yo... J

 

4.- Prácticas

 

            Os recomiendo que hagáis 3 KeyGens utilizando los conocimientos aquí expuestos anteriormente:

 

El primero: Tienes dos casillas de texto; si el segundo carácter de la de arriba es distinto que el antepenúltimo de la de abajo, que salga una ventana que diga: “Mal!”

 

El segundo: Tienes una casilla de texto; si el quinto valor empezando por la izquierda de dicha casilla no es dos, que salte la ventana de “Mal!”

 

El Tercero: Tienes dos casillas de texto:

 

o        Si el decimoquinto carácter de la primera no coincide con el sexto de la segunda, salta la ventana de “Mal!”,

 

o        Si el cuarto carácter de la segunda coincide con el tercer carácter del título del formulario, que salte una ventana que diga “Menos Mal!”, en caso contrario “Mal!”

 

o        Si coincide el decimoquinto carácter de la primera, con el cuarto de la segunda y el tercer carácter del título, que salga una ventana que diga: “Bien!”.

 

5.- Fin del Capítulo I... y Agradecimientos...

 

            Ya me marcho, no sin antes dar las Gracias a mi grupo [K-FoR] por su apoyo moral, a Txeli, Karpoff, Dek_Oin, al Profe, y a todos los Miebros de Tutoriales 2000 , y por supuesto, a todos los que hacéis posible que este mundo sea menos comercial cada día.

 

            Ya sabéis, para alguna recomendación, consulta, o crítica constructiva: Raziel@telepolis.com, y también por si me he equivocado en algo del código, si he dicho algo que no era así, o simplemente queréis las soluciones de los 3 KeyGens (Aunque pueden tardar un poco, puesto que estoy algo ocupado y además ni siquiera los he resuelto aún (Acabo de proponerlos...).

 

            Perdonad por la excesiva cantidad de colores, pero creo que así es mucho más fácil entender conceptos...

 

Un Abrazo a todos : RAZiEL; Espero sugerencias para el próximo...

 

Porque somos muchos...

 

 

 

www.000webhost.com