Serie de bytes no utilizados en la memoria de un proceso.
Una cueva de código es una serie de bytes no utilizados en la memoria de un proceso . El código oculto dentro de la memoria de un proceso suele ser una referencia a una sección que tiene capacidad para inyectar instrucciones personalizadas.
Usos comunes
Los piratas informáticos y los ingenieros inversos suelen emplear el concepto de cueva de código para ejecutar código arbitrario en un programa compilado. Puede ser un método útil para realizar modificaciones en un programa compilado, por ejemplo, incluyendo cuadros de diálogo adicionales, modificaciones de variables o incluso la eliminación de comprobaciones de validación de claves de software. A menudo, utilizando una instrucción de llamada que se encuentra comúnmente en muchas arquitecturas de CPU , el código salta a la nueva subrutina y envía la siguiente dirección a la pila. Después de la ejecución de la subrutina, se puede utilizar una instrucción de retorno para sacar la ubicación anterior de la pila y colocarla en el contador del programa. Esto permite que el programa existente salte al código recién agregado sin realizar cambios significativos en el flujo del programa.
Ventajas
- Fácil y rápido: esto significa que el proceso de modificación es rápido y sencillo. Al modificar el código existente con herramientas como Ollydbg , las funciones agregadas se pueden ensamblar y probar sin dependencias externas.
- No se necesita fuente: el uso de cuevas de código puede ser extremadamente eficiente incluso si no se proporciona ningún código fuente para el programador. Esto permite al programador realizar ajustes como agregar o eliminar funciones en el código sin tener que reescribir todo el programa o vincular dependencias externas a un proyecto existente.
Desventajas
- Fácil de romper el programa – En muchos casos se modifica el archivo ejecutable. Esto significa que es posible que no exista una reserva de código en el script existente para cualquier inyección de código debido a la falta de recursos proporcionados en el script. Cualquier reemplazo del script existente puede provocar fallas o bloqueos del programa.
- Falta de versatilidad: inyectar código en un script existente significa que el espacio limitado proporcionado solo permite modificaciones simples de instrucciones y el lenguaje utilizado es solo ensamblador. Esto se puede mitigar mediante el uso de inyectores de biblioteca compartida ( inyección de DLL [Windows] o LD_PRELOAD [Linux]), de modo que la biblioteca inyectada contenga código ya compilado y las instrucciones existentes en el binario de destino simplemente se modifiquen para usarlo.
Herramientas
- pycave: herramienta sencilla para encontrar cuevas de código en archivos ejecutables portátiles (PE). [1]
- Ollydbg : un depurador para análisis de código. Realiza un seguimiento de las llamadas y ejecuciones del script, además de mostrar cualquier iteración en las bibliotecas y los archivos binarios. El código se puede inyectar o eliminar en/desde el archivo EXE directamente con este depurador.
- PE: Explorador: permite al usuario abrir y editar archivos ejecutables llamados archivos PE (archivos ejecutables portátiles). Esto incluye .EXE, .DLL y otros tipos de archivos menos comunes.
- Cheat Engine : una poderosa herramienta que lee la memoria del proceso y escribe la memoria del proceso. Esto significa que cualquier valor de datos del lado del cliente se puede cambiar y editar. También puede mostrar cambios en los valores.
- TSearch: una poderosa herramienta que lee la memoria del proceso y escribe la memoria del proceso. Al igual que Cheat Engine, puede cambiar los datos de los valores del lado del cliente. [2] [3] [4] [5]
Referencias
- ^ "Pycueva". GitHub . 27 de octubre de 2021.
- ^ La guía para principiantes de Codecaves - CodeProject
- ^ Modificación de binarios: agregar un cuadro de diálogo de bienvenida Archivado el 7 de abril de 2014 en Wayback Machine.
- ^ Hacking de juegos: utilización de cuevas de código Archivado el 7 de abril de 2014 en Wayback Machine.
- ^ Teorías y métodos de Code-caves
enlaces externos
- Explicación de la cueva del código en alemán