La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Aprende el arte de la ingeniería inversa

Presentaciones similares


Presentación del tema: "Aprende el arte de la ingeniería inversa"— Transcripción de la presentación:

1 Aprende el arte de la ingeniería inversa
Manuel Rey Vilar

2 Agenda Objetivos del proyecto Lenguaje Ensamblador Arquitectura x86
Introducción a la Ingeniería Inversa Marco legal OLLYDBG Caso práctico Bibliografía

3 Objetivos del Proyecto
Comprender la estructura de un software, sus modos de funcionamiento y las características que impulsan su comportamiento.

4 Lenguaje Ensamblador Se define como un lenguaje de programación que se usa para dar directamente órdenes al ordenador. El ensamblador es el programa que convierte un fichero escrito en lenguaje ensamblador en código máquina o binario para que el ordenador pueda leerlo.

5 Ejemplo Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables por un microprocesador. La sentencia: MOV AL, 61h Asigna el valor hexadecimal 61 (97 decimal) al registro "AL". El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de máquina. Binario: (hexadecimal: B61) El mnemónico MOV es un código de operación u “opcode". El opcode es seguido por una lista de argumentos o parámetros, completando una típica instrucción de ensamblador. En el ejemplo, AL es un registro de 8 bits del procesador, al cual se le asignará el valor hexadecimal 61 especificado.

6 El código de máquina generado por el ensamblador consiste de 2 bytes
El código de máquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene empaquetado la instrucción MOV y el código del registro hacia donde se va a mover el dato: En el segundo byte se especifica el número 61h, escrito en binario como , que se asignará al registro AL, quedando la sentencia ejecutable como: La cual puede ser entendida y ejecutada directamente por el procesador.

7 Arquitectura x86 Estructura von Neumann

8 Stack o Pila La pila es un lugar de la memoria donde se van guardando determinados valores para recuperarlos posteriormente.

9 Los Registros AH AX AL BH BX BL CH CX CL DH DX DL EAX Acumulador SP BP
32 bits 16 bits EAX Acumulador AH AX AL BH BX BL CH CX CL DH DX DL SP BP DI SI IP FLAGS CS DS ES SS EBX Índice base ECX Contador EDX Datos ESP Apuntador de pila EBP Apuntador de base EDI Índice destino ESI Índice fuente EIP Apuntador de instrucción EFLAGS Banderas Código Datos Extra Pila

10 Las Instrucciones Las instrucciones de la CPU pueden agruparse, de acuerdo a su funcionalidad, en: Operaciones con enteros: (Estas son operaciones realizadas por la Unidad Aritmético Lógica de la CPU) Operaciones aritméticas. Como suma, resta, multiplicación, división, módulo, cambio de signo Operaciones booleanas. Operaciones lógicas bit a bit como AND, OR, XOR, NOT Operaciones de bits. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la izquierda, a través del bit del acarreo o sin él) Comparaciones Operaciones de mover datos: Entre los registros y la memoria: Aunque la instrucción se llama "mover", en la CPU, "mover datos" significa en realidad copiar datos, desde un origen a un destino, sin que el dato desaparezca del origen. Se pueden mover valores: desde un registro a otro desde un registro a un lugar de la memoria desde un lugar de la memoria a un registro desde un lugar a otro de la memoria un valor inmediato a un registro un valor inmediato a un lugar de memoria

11 Operaciones de pila (stack):
PUSH (escribe datos hacia el tope de la pila) POP (lee datos desde el tope de la pila) Operaciones de entrada/salida: Son operaciones que mueven datos de un registro, desde y hacia un puerto; o de la memoria, desde y hacia un puerto INPUT Lectura desde un puerto de entrada OUTPUT Escritura hacia un puerto de salida Operaciones para el control del flujo del programa: Llamadas y retornos de subrutinas Llamadas y retornos de interrupciones Saltos condicionales de acuerdo al resultado de la comparaciones Saltos incondicionales Operaciones con números reales: El estándar para las operaciones con números reales en las CPU está definido por el IEEE 754. Una CPU puede tener operaciones de punto flotante con números reales mediante el coprocesador numérico (si lo hay), como las siguientes: Operaciones aritméticas. Suma, resta, multiplicación, división, cambio de signo, valor absoluto, parte entera Operaciones trascendentales Operaciones trigonométricas. Seno, coseno, tangente, arcotangente Operaciones con logaritmos, potencias y raíces Otras

12 Hello World

13 Introducción a la Ingeniería Inversa
¿Qué es la Ingeniería Inversa? La Ingeniería Inversa es un procedimiento mediante el cual se revierte el lenguaje de la máquina (lenguaje de bajo nivel) al código fuente de alto nivel en el que fue escrito originalmente un programa.

14 Aplicaciones de la Ingeniería Inversa
Estudiar virus y malware Evaluar la calidad y robustez del software Añadir funcionalidad al software existente Posibilidad de interactuar con el código heredado sin conocer el código fuente De forma fraudulenta crackeando software

15 Herramientas utilizadas en Ingeniería Inversa Desensamblador
Traduce el lenguaje de máquina a lenguaje ensamblador. Depurador (Debugger) Prueba y depura (elimina) los errores del programa “objetivo” Editores Hexadecimales Permiten modificar archivos binarios

16 Herramientas utilizadas en Ingeniería Inversa Editores de recursos
Permite visualizar, extraer, modificar, editar o reemplazar cualquier tipo de recursos contenidos en los ficheros ejecutables de una aplicación Herramientas de monitorización del sistema Regshot procmon Herramientas e Información misceláneos Scripts API

17 Marco Legal Uso legal de la Ingeniería Inversa
Uso ilegal de la Ingeniería Inversa

18 OllyDBG ¿Qué es OllyDBG?
Del autor Oleh Yuschuk, OllyDBG es un depurador de código ensamblador de 32 bits para sistemas operativos Microsoft Windows.

19 Desensamblador

20 Los Registros

21 La Pila (Stack)

22 Dump

23 Caso práctico 1

24 Bibliografía Dennis Yurichev, Reverse Engineering for Beginners
Eldad Eilam, Reversing: Secrets of Reverse Engineering ISBN: 624 pages April 2005


Descargar ppt "Aprende el arte de la ingeniería inversa"

Presentaciones similares


Anuncios Google