Ingeniería Inversa
Relacionado: Herramientas. 12 Introduccion a la Criptografiaseguridad. 2025 04 20 Computacion Cuantica y Criptografia Post Cuantica. Forense de memoria de sistema completo. Rootkits y Hooking.
La ingeniería inversa consiste en analizar un programa o archivo binario para comprender su funcionamiento interno, su lógica y su comportamiento, sin tener acceso al código fuente original.
Tipos de análisis en binarios PE (Portable Executable):
-
Análisis dinámico:
Se ejecuta el binario en un entorno controlado (sandbox) para observar su comportamiento (útil en análisis de malware). -
Análisis estático / Reversing:
Se inspecciona el binario sin ejecutarlo, leyendo instrucciones en lenguaje ensamblador para reconstruir la lógica del programa.
️ Dependencia del ensamblador al procesador
El lenguaje ensamblador (assembly) está ligado a la arquitectura del procesador. No es lo mismo analizar binarios de:
-
Intel x86/x64 (arquitectura CISC, lectura de derecha a izquierda),
-
que ARM (arquitectura RISC, lectura de izquierda a derecha).
Esto afecta tanto a la sintaxis como al orden de los operandos y la semántica de las instrucciones.
Android y su resistencia al reversing
El análisis en Android es especialmente complejo por varios factores:
-
El código se ofusca automáticamente (por ejemplo con ProGuard o R8).
-
Las aplicaciones pueden estar empaquetadas o incluso usar descarga dinámica de código (modularización por componentes).
-
Se emplean técnicas anti-debugging y anti-reversing.
Por estas razones, el reversing de apps móviles puede llegar a ser más difícil que el análisis de malware clásico.
Lenguaje ensamblador: conceptos clave
Descompilación vs Desensamblado
-
Desensamblar: convertir el binario a instrucciones en ensamblador.
Herramientas:objdump,IDA Free,radare2,Ghidra. -
Descompilar: convertir el binario a un lenguaje de alto nivel (como C).
Herramientas:Ghidra,Hex-Rays(IDA Pro),Snowman.
La descompilación es mucho más compleja que el desensamblado, ya que requiere reconstruir estructuras de control, tipos de datos y llamadas de funciones.
Instrucciones clave: cmp vs test
-
cmp A, B
CalculaA - By actualiza los flags (pero no modifica los operandos). -
test A, B
RealizaA AND By actualiza los flags, también sin modificar los operandos.
Son comúnmente usadas antes de instrucciones condicionales (
je,jne,jz, etc.).
️ Herramientas destacadas
-
Ghidra: descompilador de código abierto desarrollado por la NSA, muy potente y gratuito.
-
IDA Free / IDA Pro: estándar de la industria para análisis estático.
-
radare2 / Cutter: suite libre para reversing con interfaz CLI y gráfica.
-
x64dbg: debugger útil para análisis dinámico de binarios Windows.
¿Quieres que continúe con una guía paso a paso de reversing o un caso práctico con alguna muestra de malware o binario PE?