cRACKER's n0TES

Ensamblador para Crackers (CoRN2)



AND
Uso: AND dest,src
Prop�sito: Realiza un AND l�gico de las dos entradas, reemplazando el dest con el resultado
Ejemplo: AND BX,03h

No hay mucho que pueda decirse sobre esta llamada, hace lo que dice.




CALL


Uso: CALL address
Prop�sito: Ejecuta una funci�n en la direcci�n 'address'
Ejemplo: CALL 10284312

Llama la funci�n a la direcci�n 'address', una vez la funci�n ha terminado, el c�digo continuar� en la l�nea siguiente a la llamada.




CMP


Uso: CMP dest,scr
Prop�sito: Resta src del dest y actualiza las banderas.
Ejemplo: CMP AX,03h

Esta es una instrucci�n importante hasta donde nosotros (crackers) estamos interesados :). Est� en alguna parte del programa para verificar algo, por ejemplo. para comparar el n�mero de serie real a uno que nosotros introducimos, o para verificar si un programa est� registrado etc.

Esta instrucci�n normalmente precede a una instrucci�n de salto de alg�n tipo.




Flags (Banderas)


Las banderas son esencialmente como los registros s�lo que ellos pueden ser s�lo verdaderos o falsos (por ejemplo 0 o 1). �stos son juego de ordenes como CMP, y se usa para verificar el resultado de una llamada, por ejemplo:

CMP AX, BX; Compara AX a BX, si igual la bandera del cero se pone a 1
JZ 00124531; Si la bandera del cero se pone, salta a 001254531

Para entender esto propiamente, tendr�s que seguir leyendo probablemente y entonces volver�s atr�s...




INT


Uso: INT interrupt_number
Prop�sito: Llama una funci�n predefinida (normalmente codificado en la BIOS)
Ejemplo: INT 10h

Realmente no ver�s esta orden mucho (casi en absoluto) cuando corriges programas de Windows, pero ellos se mueven alrededor del DOS. Normalmente los par�metros son pasados en los
registros predefinidos (AX, BX, CX etc.) .

Hay demasiadas llamadas INT para listarlas aqu�, mejor conseguir una copia de una lista de interrupciones.
�Ralph Browns es muy bueno! :).




JMP


Uso: JMP address
Prop�sito: Equivalente a un GOTO en basic, salta a una secci�n de c�digo
Ejemplo: JMP 00402011

JMP es un salto incondicional a una secci�n de c�digo. �Tan simple como eso! :)
Hay montones de variaciones de esta instrucci�n, las m�s importantes son:

JZ Salta si la bandera de cero se pone (lo mismo que JE)
JNZ Salta si la bandera de cero se no se pone (lo mismo que JNE)

�stos normalmente siguen a una instrucci�n CMP, por ejemplo:

CMP RealSerial,BadSerial; Compara el numero de serie real a nuestro numero de serie
JNE GoAwayBadCracker; Si No Igual entonces termina.




LODSB / LODSW (Cruehead)


Uso: LODSB / LODSW
Prop�sito: Cargas un byte o una palabra de DS:SI y lo pone en AL (LODSB) o AX (LODSW). Incrementa SI
Ejemplo: LODSW

Permite decir que DS:SI apunta a una palabra que posee el valor de EBh

LODSW; Copia la palabra a la que apunta DS:SI y lo coloca en AX

AX contendr� el valor de EBh ahora



Estas instrucciones se usan a menudo junto con la instrucci�n
REP.




MOV


Uso: MOV dest,src
Prop�sito: Copia el valor de un byte o palabra desde el origen al destino
Ejemplo: MOV AX,DX

Ver�s esto * mucho * cuando est�s caminando a trav�s del c�digo, son b�sicamente los recursos (para usar t�rminos de BASIC;))
LET dest = src

Hay varias variantes incluida MOVSX, pero todas ellas hacen b�sicamente la misma cosa. Podr�a ayudar recibir las Especificaciones de Programaci�n de Intel de su website.

�Si no puedes entender esto, estas fastidiado! ;)




MOVSB / MOVSW (Cruehead)


Uso: MOVSB / MOVSW
Purpose: Mueve (bien, realmente copia) o un byte (MOVSB) o una palabra (MOVSW) de DS:SI a ES:DI. Incrementa SI
Ejemplo: MOVSB

Permite decir que DS:SI apunta a un byte que posee el valor de 5h

MOVSB; Toma el byte al que apunta DS:SI y lo coloca en ES:DI

El byte al que apunta ES:DI ahora tiene el valor de 5h



Esta instrucci�n es muy com�n en cracking, cuando una cadena se copia a otra direcci�n. Las instrucciones se usan entonces junto con la instrucci�n
REP




Registers (Registros)


Los registros son lugares b�sicamente predefinidos en cu�l para guardar datos. Los �nicos sobre los que nosotros necesitamos preocuparnos son:
(E)AX, (E)BX, E(CX), E(DX) (La (E) es s�lo significativa cuando se corrige C�digo 32-Bit ).

Tambi�n las parejas del registro:

DS:SI; puede usarse como el origen para las operaciones de cadenas
ES:DI; Usado como el destino para las operaciones de cadenas

Entender los registros no es muy importante para crackear, generalmente solo con saber que ellos son variables para el almacenamiento de datos es bastante para que consigas empezar :)




REP


Uso: REP
Prop�sito: Repite una instrucci�n durante el n�mero de veces especificado en el registro de CX. Un REP delante de un MOVSB , LODSB o STOSB (o delante de las versiones de estas instrucciones) causar�a que esa instrucci�n se repitiese.
Ejemplo: MOV AL,Bh; AL contiene bh ahora
MOV CX,5h; CX contiene 5h ahora
REP STOSB; Copia valor de AL (5h) dentro de cualquiera de los puntos de DS:SI 5 veces e incrementa SI cada vez .




RET


Uso: RET
Prop�sito: Para volver desde una funci�n
Ejemplo: RET

Normalmente ver�s esto al final de una funci�n, y simplemente instruye al procesador para RETornar a la funci�n, a la direcci�n de la
LLAMADA.




STOSB / STOSW (Cruehead)


Uso: STOSB / STOSW
Prop�sito: Toma el valor en AL (STOSB) o AX (STOSW) y lo coloca en DS:SI. Incrementa SI.
Ejemplo: STOSB

Permite decir que AX posee el valor de EBh

STOSB

Copia el valor en AX y lo coloca en la palabra a la que apunta DS:SI. DS:SI apunta ahora a una palabra que contiene EBh

Las instrucciones se usan entonces junto con la instrucci�n
REP.




The Stack & Push/Pop


Antes de cualquier funci�n de llamada, un programa debe ' empuja ' cualquier par�metro que la funci�n espera hacia la pila. Piensa en ello como una pila de platos, el primer plato en la pila es el �ltimo en ser tomado fuera de la pila, es exactamente lo mismo. Es importante recordar esto ' primero puesto / �ltimo quitado ' principalmente al mirar una LLAMADA, esto significa que los par�metros se pasar�n en orden inverso...

En caso de que mi balbuceo te haya confundido, echa mirada a este ejemplo:

La funci�n API GetDlgItemText de Windows requiere los par�metros siguientes:

(1) el manipulador de caja de dialogo
(2) el identificador de control
(3) la direcci�n de pulidor para el texto
(4) el tama�o del m�ximo de cadena

Por consiguiente �stos podr�an pasarse as�:

MOV EDI,[ESP+00000220]; Obtiene el Manipulador de la caja de dialogo en EDI
PUSH 00000100; EMPUJA (4) el tama�o M�ximo de la cadena
PUSH 00406130; EMPUJA (3) la Direcci�n del buffer para el texto
PUSH 00000405; EMPUJA (2) el Identificador de control
PUSH EDI; EMPUJA (1) el Manipulador de la caja de dialogo
CALL GetWindowText; LLAMA a la funci�n

�F�cil Eh? ��sta puede ser una de las maneras m�s simples de crackear una app de n�mero de serie, si conoces la direcci�n del buffer para el n�mero de serie, en este caso 00406130, s�lo pon un punto de ruptura en �l, y normalmente acabar�s a en o alrededor del procedimiento que genera el numero de serie real!! :)

POP es usado simplemente para remover el primer elemento de la pila, normalmente hay mucho ellos antes del retorno de una funci�n al programa...

 

The cRACKER's n0tES esta dividido dentro de 12 partes principales:
 TX. Notas del Traductor
 00. INDICE
 01. Ensamblador para Cracker (CoRN2)
 02. SoftICE (Men� de arranque , Configuraci�n, Comandos)
       
 1 Men� de arranque
       
 2 Configuraci�n
       
 3 Comandos
 03. Breakpoints & Detalles de API de Windows
       
 1 Programas restringidos
       
 2 Cajas de di�logo
       
 3 Verificando el Tipo de unidad
       
 4 Acceso a archivos
       
 5 Acceso al Registro
       
 6 Cogiendo n�meros de serie
       
 7 Accediendo a Tiempo & Fecha
       
 8 Generando ventanas
 04. Instrucciones de salto
 05. Instrucciones SET
 06. Tips & Trucos para Crackear
       
 1 Programas restringidos
       
 2 Dongles
       
 3 General
       
 4 Configuraci�n de InstallSHIELD
       
 5 Protecciones con Archivo llave
       
 6 Pantallas molestas
       
 7 L�mites de Runtime
       
 8 Serials
       
 9 Limites de Tiempo
       
10 Programas Visual BASIC
 07. Ventanas de Mensajes Para los Cracker
 08. Identificando funciones, Argumentos, y Variables (Rhayader)
 09. Los Sistemas de Protecciones de comerciales
       
 1 Armadillo
       
 2 C-Dilla SafeDISC
       
 3 SalesAgent
       
 4 SecuROM
       
 5 softSENTRY
       
 6 TimeLOCK
       
 7 VBox
 10. Bitmanipulation (Cruehead)
 11. Teor�a general de Cracking
 12. FAQ

 +A. C�mo contactar conmigo
 +B. �Que es lo Nuevo?


 



The cRACKER's n0TES are Copyright 1998-2000 by TORN@DO of ID.
Todo los Derechos Reservados.
Traducido por
Revisado por X-Grimator.