Si escribimos en Google.com las palabras Ingeniería Inversa, nos devuelve 328,000 páginas en español y inglés. Este texto no pretende ser un manual de como hacer Ingeniería Inversa solo es un bosquejo para dar una idea general de lo que es.
Hoy día la ingeniería inversa es válida para la re-utilización de código de productos existentes y a veces obsoletos y "crear" un mejor producto, algunas veces liberan el código para su utilización. Usualmente los verdaderos "hackers" emplean este método para saber como trabaja determinado producto y descubrir si posee alguna vulnerabilidad o buscar la forma de crear una versión libre de ese producto.
La idea general de emplear la Ingeniería Inversa es:
- Conocer a fondo la aplicación y generar un mejor código.
- Migrar la aplicación a un nuevo sistema operativo.
- Hacer o completar la documentación.
- Verificar que el código en estudio cumple las especificaciones de diseño estandar
La información extraída de la lectura del código fuente son las especificaciones de diseño: modelos de flujo de control, diagramas de diseño, documentos de especificación de diseño, pudiendo tomarse estas especificaciones como nuevo punto de partida para aplicar ingeniería inversa y obtener información a mayor nivel de abstracción.
Según la Wikipedia : "El objetivo de la ingeniería inversa es obtener información a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.
En general si el producto u otro material que fue sometido a la ingeniería inversa fue obtenido en forma apropiada, entonces el proceso es legítimo y legal. De la misma forma, pueden fabricarse y distribuirse, legalmente, los productos genericos creados apartir de la información obtenida de la ingeniería inversa, como es el caso de algunos proyectos de Software libre ampliamente conocidos.
El programa Samba es un claro ejemplo de ingeniería inversa, dado que permite a sistemas operativos UNIX compartir archivos con sistemas Microsoft Windows. El proyecto Samba tuvo que investigar información confidencial (no liberada al público en general por Microsoft) sobre los aspectos técnicos relacionado con el sistema de archivos Windows. Lo mismo realiza el proyecto WINE para el conjunto de API de Windows y OpenOffice.org con los formatos propios de Microsoft Office, o se hace para entender la estructura del sistema de archivos NTFS y así poder desarrollar drivers para la lectura-escritura del mismo (principalmente para sistemas basados en GNULinux).
La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone profundizar en el estudio de su funcionamiento, hasta el punto de que podemos llegar a entender, modificar, y mejorar dicho modo de funcionamiento."
Ahora bien, para realizar Ingeniería Inversa hay que tener cierto nivel de entendimiento de programación especificamente en Assembler
La mayoría de las personas asocian Ingeniería Inversa con Cracking , y aún cuando se podría decir que van agarradas de la mano son áreas específicamente diferentes.
Antes de entrar al mundo de la Ingeniería inversa del software debes tener en cuenta estos conceptos básicos:
Depurador/Debugger: https://es.wikipedia.org/wiki/Depurador
Editor Hexadecimal: https://es.wikipedia.org/wiki/Editor_hexadecimal
Compilador: https://es.wikipedia.org/wiki/Compilador
Herramientas:
oSpy: Es una herramienta permite usar la ingeniería inversa en la plataforma Microsoft Windows. Trabajando directamente con los procesos como el estado de los (protocolos de sincronización, mensajería instantánea, etc). Esta herramienta intercepta las prncipales API utilizada por MSN Messenger, Google Talk, etc para cifrar / descifrar los datos HTTPS.
Enlace: https://code.google.com/p/ospy/
OllyDbg: Es un depurador de 32 bits a nivel de ensamblador para analizar software Microsoft Windows. OllyDbg es un shareware, pero se puede descargar y utilizar de forma gratuita.
Enlace: https://www.ollydbg.de/
W32Dasm: es un desensamblador de 16/32 bits para Windows.
Enlace:https://www.plunder.com/W32dASM-8-94-download-528.htm
Rasta Ring 0 Debugger: Alternativa Libre similar al Softice
Enlace: https://rr0d.droids-corp.org/
SoftIce: La Leyenda (actualmente desactualzado) Es capaz de desensamblar un programa mientras éste se encuentra en ejecución, deteniendo al mismo en la instrucción exacta que se está ejecutando. Se puede tracear el programa a depurar de dos formas distintas: paso a paso siguiendo cada instrucción según el curso normal del programa o bien seguir el código línea a línea sin tener en cuenta las instrucciones de saltos.
Enlace de descarga https://www.megaupload.com/es/?d=04RTJU2C o https://www.mediafire.com/?bmmvl11mj2t
Syser: Este depurador indica que es el sucesor de SoftICE. Se ejecuta en las versiones 32-bit de Windows Vista/XP/2003/2000, y soporta SMP, HyperThreading y CPUs multinúcleo.
Enlace:https://www.sysersoft.com/
NLKD: Depurador para Kernel
https://forge.novell.com/modules/xfmod/project/?nlkd
IDA: Uno de los mejores
Enlace:: https://www.hex-rays.com/idapro/idadownfreeware.htm
UltraEdit: Uno de los mejores editores hexadecimales (shareware)
Enlace:: https://www.ultraedit.com/
HxD: Potente editor hexadecimal, capaz no sólo de abrir ficheros, sino también de leer y escribir datos en sectores del disco duro y procesos en memoria. Compatible con varios estándares, HxD puede copiar datos en texto puro, HTML o como variable para lenguajes de programación. HxD es una herramienta potente, útil en determinados escenarios en los que la lectura de datos en bruto sea el último recurso.
Enlace: https://mh-nexus.de/en/hxd/
Compiladores:
The Go tools for Windows + Assembler: Herramienta para "ensamblar" código genera un ejecutable.
Enlace: https://www.jorgon.freeserve.co.uk/
LuxAsm: Herramienta "ensambladora" bajo entorno GNU/Lnux
Enlace: https://luxasm.sourceforge.net/
Manuales:
Sobre diversos aspectos del SoftICE
https://bibliotecainformatica.iespana.es ... n_ice1.zip
Estudio de las protecciones del Software
https://www.karpoff.hpg.ig.com.br/
Reverse Engineering (en Ingles)
https://www.publispain.com/supertutorial ... evengi.htm
Introducción al Cracking con OLLYDBG desde 0
https://ricardonarvaja.info/..../TUP/
Lectura recomendada:
Ingeniería inversa y los números mágicos
https://erwin.ried.cl/?modo=visor&elemento=239
Configuración GDB para ingeniería inversa
https://diariolinux.com/2008/05/20/confi ... a-inversa/
Software Security and Reverse Engineering
https://www.infosecwriters.com/text_reso ... eering.pdf
Ingeniería inversa de base de datos
https://www.latiumsoftware.com/es/articles/00020.php
Quieres iniciarte en Ingenieria Inversa?
https://foro.el-hacker.com/index.php/topic,123800.0.html
Manual de Ingenieria Inversa
https://www.conocimientosweb.net/dcmt/ficha960.html
Otra Fuentes consultadas:
Ingeniería inversa
https://es.wikipedia.org/wiki/Ingeniería_inversa
Ingeniería inversa de procesos que corren en Windows
https://www.hackhispano.com/foro/showthread.php?t=31389
Ingeniería Inversa de Procesos
https://cnx.org/
;-P a la masa de programadores y hackers taberneros, seguro que les interesa este metodo para aprender mas por cuenta propia.
disfrutenlo, este podria ser mi ultimo mensage... o podria ser borrado el mismo.