Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Ingeniería Inversa de Software

No description
by

Martín Pestoni

on 3 July 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Ingeniería Inversa de Software

Historia
Ingeniería Inversa de Software
¿Qué es?
“Es el proceso de construir especificaciones de un mayor nivel de abstracción partiendo
del código fuente de un sistema software o cualquier otro producto (se puede utilizar
como punto de partida cualquier otro elemento de diseño, etc.).” (M. Sicilia)
¿Para qué se utiliza?
En empresas.
En el área militar.
En software.
En hardware.
Comprobación de seguridad.
Generación de claves.
Reparación.
Ventajas
Reduce la complejidad del sistema.
Permite poder entender objetos y sistemas desconocidos.
Recupera o actualiza la información perdida.
Permite analizar con qué tipo de tecnología se confeccionó un objeto y determinar la compatibilidad entre las distintas tecnologías.
Genera diferentes alternativas.
Averigua cuáles y cuántas etapas y/o pasos fueron utilizados en la construcción del objeto
Permite detectar fallas en el hardware y software y los motivos por los cuales se producen de manera de evitarlas en el futuro.
Facilita la reutilización para reducir costos y riesgos de mantenimientos.
Tipos de Ingeniería Inversa de software
De datos.
Lógica o de procesos.
De Interfaz de usuario.
El proceso de I.V.
"La ingeniería inversa es tan antigua como la ingeniería..."

Su historia parte del surgimiento del comercio.

El verdadero crecimiento de la ingeniería inversa ocurre como consecuencia natural de la Revolución Industrial.
Código fuente sucio(no estructurado)
Reestructuración del código
Código fuente limpio
Extraer abstracciones
Especificación inicial
Refinar y simplificar
Especificación final
Procesamiento
Interfaz de usuario
Base de datos
Herramientas
Depuradores
De Inyección de fallos
Desensambladores
Descompiladores
Depurador
Desensamblador
Un desensamblador es una herramienta que intenta recrear el código en ensamblador partiendo del código de máquina binario
Un depurador se utiliza para controlar otros programas, además:
Permite avanzar paso a paso en el código.
Rastrea errores.
Establece puntos de control.
Permite examinar las variables.
Permite ver y modificar el estado de la memoria.
Descompilador
Un descompilador es una herramienta que transforma código máquina en código fuente escrito en lenguaje de alto nivel.
Algunos ejemplos:
En Windows:
● OllyDbg
● WinDBG
● SoftICE
En GNU/Linux:
● Gdb(GNU Debugger)
● Emacs
● DDD (Data Display Debugger)
Algunos ejemplos:
En Windows:
IDA Pro
PE Explorer
IDA Pro Freeware 4.1
En GNU/Linux:
Bastard Disassembler
Ciasdis
Algunos ejemplos:
Ferrari (Fault and ERRor Automatic Realtime
Injection)
● FTAPE (Fault Tolerance and Performance Evaluator)
● Doctor (IntegrateD SOftware Fault InjeCTiOn EnviRonment)
● Orchestra
● Xception
● GridFIT
(Grid – Fault Injection Technology)
Inyección de fallos
Algunos ejemplos son:
DCC Decompiler
Boomerang Decompiler Project
Reverse Engineering Compiler (REC)
ExeToC
Code-dump
Es una herramienta que provoca fallas en el software para posteriormente analizarlas.
¿Preguntas?
Full transcript