ensamblador
ENSAMBLADOR & DESENSAMBLADO
ENSAMBLADOR
A la hora de crackear hay que tener unos conocimientos basicos de ASM, mientras mas mejor. Los programas son un listado de ordenes que se reproducen en lenguaje maquina, pero que para poder realizarlos tenemos este lenguaje que consiste en una serie de mnemotecnicos que facilitan su interpretacion, cada una de las instrucciones secodifican en una serie de numeros binarios, a traves de un compilador, que lo que hace es traducir una serie de instrucciones dando igual si se programaron en C, C++, pascal, a unos y ceros.... Espero que te hayas bajado los tutoriales que te recomende en el primer capitulo, porque lo que voy a hacer aqui es una breve introduccion a la forma de trabajo y a sus principales instrucciones.
Este lenguajeconsta de una instruccion y dos operandos llamados registros en los que se almacenan las cosas, osea que un registro es igual a una variable en otro lenguaje.
Los registros
- AX BX CX DX
Voy a explicar el primero por que los otros tres, quitando algunas particularidades que sirven a la hora de programar son basicamente igual.AX: AX es un registro de 16 bits (16 unos o ceros, o dosbytes) se divide a su vez en otros dos de ocho AL (Low) y AH (High), esto era principalmente en ordenadores anteriores al 386 ya que a partir de estos se expandio creando el registro EAX (Extended) de tamaño 32 bits (Ademas, hoy en dia ¿quien tiene menos de un 486?). Veamoslo graficamente:
EAX
|----------------|----------------|
AX
|--------|--------|
AH ALCreo que se entiende.
La funcion basica de AX es la de ACUMULADOR en diversas operaciones como MUL o DIV
Hay otras funciones, como la de indicar la funcion de cada interrupcion, pero esto no nos interesa para nuestro proposito ya que es para la programacion en DOS
BX Tambien se divide en EBX, BX, BH y BL y el nombre del registro es BASE
CX Se divide igual que los anteriores, el interes deeste radica en que se usa como el numero de repeticiones en los contadores.
DX Uno de los usos mas comunes del registro de Datos, es cuando al realizar un MUL o un DIV el resultado no cabe en AX y se guarda en DX:AX
Ahora vamos a ver los Registros Indices:
SI DI BP SP.
SI Source Index, Indice Fuente
DI Indice Destino
BP Base pointer, Puntero BaseSP Stack Pointer, puntero de la pila
Los 4 son registros de 16 bits y no se dividen en una parte alta y otra baja
Registros de Segmento:
CS DS SS ES.
CS: Code segment, o segmento de Codigo, indica donde se halla el programa que se esta ejecutando
DS: Data Segment, o segmento de datos, indica donde lee y escribe el programa los datospor defecto
SS: Stack Segment, segmento de la pila, indica el lugar de la pila
ES: Extra Segment, segmento extra. Es una extension de DS.
Puntero de instruccion: IP (16 bits)
Instruction Pointer, Indica la siguiente instruccion a ejecutar, se encuentra en el segmento especificado por CS
CS e IP en Forman la direcci¢n real de la siguiente instruccionFLAGS
Bueno, yo creo que con esto andamos sobrados de registros :)
Ahora vamos a ver otra de las cosas importantes y mas sencillas, los FLAGS o BANDERAS. Existe un regitro de 16 bits de tamaño de los cuales 7 no se usan
y que guardan todos los flags
* * * * * * * O D I T S Z A C
Estas son las iniciales, quedate con que cada uno de ellos puede tener un valor, segun la logicabooleana un 1 o un 0 y que en funcion de este se produciran distintos eventos.
LA PILA
La pila es un lugar donde se almacenan variables para poder usarlas posteriormente, su modo de funcionamiento corresponde a las siglas inglesas LIFO (Last Input First Output, o lo que es lo mismo ultima entrada primera salida, pero UEPS no queda muy bien ;)) Para entenderlo piensa en lo siguiente, una pila de...
Regístrate para leer el documento completo.