Introducción A La Ingenieria Inversa X86 [Unlearningsecurity]

Páginas: 15 (3535 palabras) Publicado: 28 de noviembre de 2012
UNLEARNING SECURITY

Introducción a la
ingeniería inversa x86
http://unlearningsecurity.blogspot.com

Daniel Romero Pérez
unlearnsecurity@gmail.com
Marzo del 2012

* Recopilación de entregas realizadas en http://unlearningsecurity.blogspot.com

ÍNDICE
INTRODUCCIÓN A LA INGENIERÍA INVERSA X86 (PARTE I) ............................................................... 2
INTRODUCCIÓN ALA INGENIERÍA INVERSA X86 (PARTE II) .............................................................. 5
INTRODUCCIÓN A LA INGENIERÍA INVERSA X86 (PARTE III) ............................................................. 8
INTRODUCCIÓN A LA INGENIERÍA INVERSA X86 (PARTE IV) ........................................................... 11
INTRODUCCIÓN A LA INGENIERÍA INVERSA X86 (PARTE V)............................................................ 14

1

INTRODUCCION A LA INGENIERIA INVERSA X86 (PARTE I)
Una de las temáticas que más me han llamado la atención y por varios motivos menos e
tocado el mundo de la seguridad de la información, son la ingeniería inversa y el desarrollo de
exploits. Me parece una tarea realmente interesante y con una gran cantidad de profesionales
detrás deella. Por ese y algún que otro motivo, he decidido realizar una serie de entradas en
relación a dichos temas y así poder descubrir un poco como funciona todo este mundo.
Teniendo en cuenta mi desconocimiento del lenguaje ensamblador y de la arquitectura x86
empezaremos por lo más fácil. Así que iremos creando pequeños códigos en lenguaje C e
interpretando en ensamblador que se está haciendo.Pero antes de meternos de lleno, recordaremos muy por encima algunos registros básicos, las
instrucciones principales y el funcionamiento de la pila.
Registros
Utilizados para facilitar la tarea en el procesado de las instrucciones, cómo para almacenar
datos que se utilizaran posteriormente por las mismas. Estos son alguno de los registros
básicos que existen:
-

EAX (Accumulatorregister): Utilizado tanto para realizar cálculos, cómo para el almacenamiento de
valores de retorno en "calls".

-

EDX (Data register): Extensión de EAX, utilizada para el almacenamiento de datos en cálculos más
complejos.

-

ECX (Count register): Utilizado en funciones que necesiten de contadores, como por ejemplo
bucles.

-

EBX (Base register): Se suele utilizar para apuntar a datossituados en la memoria.

-

ESI (Source index): Utilizado para la lectura de datos.

-

EDI (Destination index): Utilizado para la escritura de datos.

-

ESP (Stack pointer): Apunta a la cima de la pila “stack”.

-

EBP (Base pointer: Apunta a la base de la pila “stack”.

Instrucciones
Son acciones predefinidas en el lenguaje ensamblador. Algunas de las más habituales de verson:
-

Push: Guarda el valor en la pila.
Pop: Recupera valor de la pila.
Mov (dst, src): Copia el operador “src” en el operador “dst” .
Lea (reg, src): Copia una dirección de memoria en el registro destino (ej: EAX).
Add (o1, o2): Suma los dos operadores y los almacena en el operador uno.
Sub (o1, o2): Resta el valor del segundo operador sobre el primero y lo almacena en el primer
operador.Inc: Incrementa en 1 el valor del operador indicado.
Dec: Decrementa en 1 el valor del operador indicado.
And: El resultado es 1 si los dos operadores son iguales, y 0 en cualquier otro caso.

2

-

Or: El resultado es 1 si uno o los dos operadores es 1, y 0 en cualquier otro caso.
Cmp: Compara dos operadores.
Jmp: Salta a la dirección indicada.
Call: Llama/Salta a ladirección/función indicada.
Nop: Not Operation.

PILA (Stack)

La PILA o Stack es un conjunto de direcciones de memoria encargadas de almacena
información de llamadas a funciones, variables locales, direcciones de retorno a funciones
anteriores, entre otras tareas. La PILA es dinámica, por lo que va cambiando su tamaño
dependiendo de la función a la cual se encuentre asociada, dispone de una estructura...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Ingenieria Inversa
  • Ingenieria Inversa
  • Ingenieria inversa
  • Ingenieria inversa
  • Ingenieria inversa
  • Ingenieria Inversa
  • Ingenieria Inversa
  • Ingenieria Inversa

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS