�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�n� de 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
bastara� solo 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�� W32Dasm�
disassembler (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 en�
lenguaje 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
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