ESTUDIO DE PROTECCIONES BASICO PARA PRINCIPIANTES��� (Tambi�n llamado cracking)

Impartido por Rat�n

 

Nota

Cada capitulo ira acompa�ado de su crackme correspondiente.No facilitare paginas de donde bajarse herramientas ni enlaces a paginas de crackers, la intenci�n es que busqu�is en Internet todo lo necesario. Seguro que encontr�is mas paginas de herramientas, tutoriales y utilidades relacionadas con este tema que las que yo pueda deciros.

Con esto solo quiero fomentar vuestro inter�s, adem�s se que la b�squeda os proporcionara gratas sorpresas.

A todos un saludo.

 

 

Con este capitulo adjunto dos manuales sobre Olly Debugger de The Pope

 

Capitulo 0

 

 

Objetivo

 

Prepararse minimamente para el curso y ver de qu� va el rollo.

 

Introducci�n

 

Esta idea surge con el fin de rellenar el hueco que bajo mi punto de vista falta en el foro de HackxCrack sobre el tema Cracking.

Este pretende ser un cursillo muy b�sico de aproximaci�n al estudio de las protecciones en los programas comerciales examinando sus puntos vulnerables.

Esta dirigido a personas que nunca hayan tenido contacto con este tema y explicado de la mejor manera que pueda explicarlo un principiante (o sea yo).

Lo explicare como a mi me hubiera gustado que me lo explicaran, por tanto ser� explicado de la manera m�s llana y sencilla posible explicando todo de forma detallada (siempre dentro de mis posibilidades).

Ser� tratado partiendo de crackmes, peque�os programas construidos para simular la protecci�nde los programas comerciales.

Tambi�n veremos alg�n programa shareware que tenga relaci�n con el tema, sin modificar el programa pues seria un acto ilegal, observaremos el programa cargado en memoria sin realizar cambio alguno en el ejecutable, solo como complemento y ejemplo practico de alguno de los cap�tulos del curso.

Esta pensado para complementarse con tutoriales e informaci�n difundida por la red, pues como digo trataremos lo mas b�sico y si ten�is ansias de saber no os bastarasolo con la informaci�n que se incluya en cada capitulo.

Constara en principio de 10 cap�tulos comprimidos en formato rar para descargar, con sus correspondientes crackmes y material de apoyo si fuera necesario.

Acepto cr�ticas, ayudas y correcciones.

Espero animar con esto a que colabore gente con m�s y m�s amplios conocimientos que yo en la materia (cosa no muy dif�cil, por cierto).

Si alguien desea unirse al proyecto ser� bienvenido.

Para cualquier pregunta sobre el tema habilitare un hilo en el foro. No contestare preguntas sobre este tema en ning�n otro hilo con el fin de centrar todo lo que tenga que ver con el tema crack en un solo hilo para facilitar vuestras consultas.

La intenci�n no es solo utilizar este hilo para el curso sino agrupar en el cualquier pregunta relacionada con el tema crack.

 

A la hora de explicar utilizare distintos t�rminos para nombrar la misma cosa, por ejemplo: programa � ejecutable�� �� cadena � String.

Esto lo har� para que ve�is las distintas formas de llamar a la misma cosa y os aclar�is al leer tutoriales de otros crackers.

Click o clickear ser� la acci�n de pulsar el bot�n izquierdo del rat�n, click derecho ser� la acci�n de pulsar el bot�n derecho del rat�n, doble click ser� la acci�n de pulsar 2 veces el bot�n izquierdo del rat�n.

Ya ir�is pillando mi forma de explicar (espero).

 

 

Herramientas necesarias.

 

Ser� importante hacerse con ciertas herramientas.

Os dar� una base sobre la que partir y vosotros mismos ir�is adapt�ndoos a lo que necesit�is seg�n vay�is aprendiendo.

En principio seria interesante que consiguierais poco a poco estos programas:

 

Necesario para el capitulo 1�� Olly Debugger(debugger) El curso se basa al 90% en este programa. Imprescindible.

������������������������������������������

����� Siguientes cap�tulos�� W32Dasmdisassembler (desemsamblador)

������������������������������������������� DeDe Delphi decompiler (descompilador de ejecutables programados en delphi)

������������������������������������������� PE Explorer (editor de recursos)

������������������������������������������� Exescope (editor de recursos)

������������������������������������������� Peid (detector de protecciones de ejecutables)

������������������������������������������� Pe scan (detector de protecciones de ejecutables)

������������������������������������������� Procdump (desempacador gen�rico de protecciones de ejecutables)

���������������������� ���������������������Ida pro (desemsamblador)

������������������������������������������� Smartcheck (debugger visual basic)

������������������������������������������� Resource hacker (editor de recursos)

������������������������������������������� Patch FX (creador de cracks para distribuir)

 

La intuici�n, la paciencia y el empe�o esta en vuestras manos.

 

Si necesit�ramos alg�n programa espec�fico que no estuviera en esta lista (un editor hexadecimal por ejemplo) lo dir� con antelaci�n.

Procurad conseguir la versi�n mas reciente de los programas as� como sus plugins si los tuvieran.

 

Aparte no estar�a de m�s que mirarais alg�n tutorial de ensamblador para ver las instrucciones m�s comunes.

No es necesario aprender a programar en ensamblador, lo que necesitemos saber se ira aprendiendo poco a poco.

 

De momento aqu� os dejo una peque�a tabla con instrucciones enlenguaje ensamblador sacada de diversos libros y paginas Web.

Tambi�n una tabla de conversi�n ASCII � Hexadecimal.

Para que tom�is contacto con el Olly Debugger incluyo dos manuales (muy buenos manuales, mirad la carpeta correspondiente a este capitulo) de The POPE (gracias The POPE).

��������������������������������������������������������������� �������������

������������������������������������������������������������������������������������������

No es necesario estudiar el lenguaje ensamblador, pero estar�a bien que le echarais un vistazo por lo menos a las instrucciones de salto.

 

 

ENSAMBLADOR

 

Registros de la CPU

 

La CPU tiene 14 registros internos, cada uno de 16 bits. Los primeros cuatro, AX, BX, CX, y

DX son registros de uso general y tambi�n pueden ser utilizados como registros de 8 bits,

para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que

son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable

tambi�n a los registros BX, CX y DX.

 

Los registros son conocidos por sus nombres espec�ficos:

AX Acumulador

BX Registro base

CX Registro contador

DX Registro de datos

DS Registro del segmento de datos

ES Registro del segmento extra

SS Registro del segmento de pila

CS Registro del segmento de c�digo

BP Registro de apuntadores base

SI Registro �ndice fuente

DI Registro �ndice destino

SP Registro del apuntador de la pila

IP Registro de apuntador de siguiente instrucci�n

F Registro de banderas

 

 

 

 

Instrucciones l�gicas.

 

Son utilizadas para realizar operaciones l�gicas sobre los operandos.

AND

NEG

NOT

OR

TEST

XOR

 

Instrucciones aritm�ticas.

 

Se usan para realizar operaciones aritm�ticas sobre los operandos.

 

ADC

ADD

DIV

IDIV

MUL

IMUL

SBB

SUB

 

 

Operaciones CALL y RET

La instrucci�n CALL transfiere el control a un procedimiento llamado, y la instrucci�n RET

regresa del procedimiento llamado al procedimiento original que hizo la llamada. RET debe

ser la ultima instrucci�n en un procedimiento llamado. Los formatos generales para CALL y

 

RET son:

(etiqueta) CALL (procedimiento)

(etiqueta) RET (inmediato)

 

 

El c�digo objeto particular que CALL y RET generan depende de si la operaci�n implica un

procedimiento NEAR (cercano) o un procedimiento FAR (lejano).

 

 

 

Instrucciones para ciclos

 

LOOP Transfieren el flujo del proceso, condicional o

 

incondicionalmente, a un destino repiti�ndose esta acci�n hasta que el contador sea cero.

 

LOOP

LOOPE

LOOPNE

 

Instrucciones de conteo

 

Se utilizan para decrementar o incrementar el contenido de los

contadores.

 

DEC

INC

 

Instrucciones de comparaci�n Son usadas para comparar operandos, afectan al contenido de las

banderas.

 

CMP

CMPS (CMPSB) (CMPSW)

 

Instrucciones de banderas

 

Afectan directamente al contenido de las banderas.

 

CLC

CLD

CLI

CMC

STC

STD

STI

 

 

Instrucciones de salto

 

Son utilizadas para transferir el flujo del proceso al operando indicado.

 

JMP

JA (JNBE)

JAE (JNBE)

JB (JNAE)

JBE (JNA)

JE (JZ)

JNE (JNZ)

JG (JNLE)

JGE (JNL)

JL (JNGE)

JLE (JNG)

JC

JNC

JNO

JNP (JPO)

JNS

JO

JP (JPE)

JS

 

 

Instrucci�n JMP

Prop�sito: Salto incondicional

Sintaxis:

JMP destino

Esta instrucci�n se utiliza para desviar el flujo de un programa sin tomar en cuenta las

 

condiciones actuales de las banderas ni de los datos.

 

Instrucci�n JA (JNBE)

Prop�sito: Brinco condicional

Sintaxis:

JA Etiqueta

Despu�s de una comparaci�n este comando salta si est� arriba o salta si no est� abajo o si

 

no es igual.

Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la

 

bandera ZF esta desactivada (que alguna de las dos sea igual a cero).

 

Instrucci�n JAE (JNB)

Prop�sito: salto condicional

Sintaxis:

JAE etiqueta

Salta si est� arriba o si es igual o salta si no est� abajo.

El salto se efect�a si CF esta desactivada.

Instrucci�n JB (JNAE)

Prop�sito: salto condicional

Sintaxis:

JB etiqueta

Salta si est� abajo o salta si no est� arriba o si no es igual.

Se efect�a el salto si CF esta activada.

 

Instrucci�n JBE (JNA)

Prop�sito: salto condicional

Sintaxis:

JBE etiqueta

Salta si est� abajo o si es igual o salta si no est� arriba.

El salto se efect�a si CF est� activado o si ZF est� activado (que cualquiera sea igual a

 

1).

 

Instrucci�n JE (JZ)

Prop�sito: salto condicional

Sintaxis:

JE etiqueta

Salta si es igual o salta si es cero.

El salto se realiza si ZF est� activada.

 

Instrucci�n JNE (JNZ)

Prop�sito: salto condicional

Sintaxis:

JNE etiqueta

Salta si no es igual o salta si no es cero.

El salto se efect�a si ZF est� desactivada.

Instrucci�n JG (JNLE)

Prop�sito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JG etiqueta

Salta si es m�s grande o salta si no es menor o igual.

El salto ocurre si ZF = 0 u OF = SF.

 

Instrucci�n JGE (JNL)

Prop�sito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JGE etiqueta

Salta si es m�s grande o igual o salta si no es menor que.

El salto se realiza si SF = OF

 

Instrucci�n JL (JNGE)

Prop�sito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JL etiqueta

Salta si es menor que o salta si no es mayor o igual.

El salto se efect�a si SF es diferente a OF.

 

Instrucci�n JLE (JNG)

Prop�sito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JLE etiqueta

Salta si es menor o igual o salta si no es m�s grande.

El salto se realiza si ZF = 1 o si SF es diferente a OF

 

Instrucci�n JC

Prop�sito: salto condicional, se toman en cuenta las banderas.

Sintaxis:

JC etiqueta

Salta si hay acarreo.

El salto se realiza si CF = 1

 

Instrucci�n JNC

Prop�sito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNC etiqueta

Salta si no hay acarreo.

El salto se efect�a si CF = 0.

Instrucci�n JNO

Prop�sito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNO etiqueta

Salta si no hay desbordamiento.

El salto se efect�a si OF = 0.

 

Instrucci�n JNP (JPO)

Prop�sito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si no hay paridad o salta si la paridad es non.

El salto ocurre si PF = 0.

 

Instrucci�n JNS

Prop�sito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si el signo esta desactivado.

El salto se efect�a si SF = 0.

 

Instrucci�n JO

Prop�sito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JO etiqueta

Salta si hay desbordamiento (overflow).

El salto se realiza si OF = 1.

 

Instrucci�n JP (JPE)

Prop�sito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JP etiqueta

Salta si hay paridad o salta si la paridad es par.

El salto se efect�a si PF = 1.

 

Instrucci�n JS

Prop�sito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JS etiqueta

Salta si el signo est� prendido.

El salto se efect�a si SF = 1.

 

 

Instrucciones de transferencia

Son utilizadas para mover los contenidos de los operandos. Cada instrucci�n se puede usar

 

con diferentes modos de direccionamiento.

MOV

MOVS (MOVSB) (MOVSW)

 

Instrucciones de carga

 

Son instrucciones espec�ficas de los registros. Son usadas para cargar en algo en registro

bytes o cadenas de bytes.

LODS (LODSB) (LODSW)

LAHF

LDS

LEA

LES

 

Instrucciones de la pila

 

Estas instrucciones permiten el uso de la pila para almacenar y extraer datos.

 

POP

POPF

PUSH

PUSHF

 

TABLA DE CONVERSION

 

 

Bueno espero que mientras le�ais esta introducci�n estuvierais bajando el OllY, si es as� podemos pasar al siguiente capitulo y empezar a trastear con el primer crackme.

 

 

Gracias

A todos los crackers y programadores de los cuales he aprendido y sigo aprendiendo.

A los creadores de crackmes

En especial y sin menospreciar a nadie a Ricardo Narvaja por su aportaci�n y su trabajo sobre el estudio de las protecciones y sus tutoriales en castellano y a Makkakko por sus tutoriales con Olly Debugger (Recomendados 100%).

A ti que me estas leyendo.

 

 

Rat�n Enero 2004