BareMetal-RAM-Dumper es una utilidad bare-metal para arquitecturas x86 que arranca desde un disco o una memoria USB y vuelca el contenido completo de la RAM del sistema directamente en el propio medio de arranque, sin necesidad de sistema operativo. La herramienta se apoya en interrupciones del BIOS para inicializar el entorno y realizar operaciones de disco, y activa temporalmente el modo unreal para acceder a direcciones físicas de memoria por encima del límite de 1 MB.
El proyecto fue diseñado y probado para experimentar con ataques de Cold Boot, una técnica que consiste en enfriar la memoria RAM de un portátil (en el repositorio se mencionan ensayos a -60 °C) y reiniciar rápidamente desde una unidad USB que contenga el binario. De esta forma se capturan los datos residuales antes de que se degraden, lo que permite extraer información sensible como claves de cifrado.
En su arquitectura interna, un bootloader de 512 bytes (stage1.asm) inicializa los registros de segmento, configura la pila y carga stage2.asm desde LBA 1 en la dirección 0x8000 mediante la interrupción INT 0x13 AH=0x42. La segunda etapa consulta el soporte EDD del BIOS, obtiene el mapa de memoria con INT 0x15 E820, calcula el tamaño máximo de RAM y procesa la memoria en bloques de 32 KB: activa el modo unreal, copia cada bloque a un buffer en baja memoria (0x90000) y lo escribe al disco con INT 0x13 AH=0x43 a partir del sector 64, mientras muestra el porcentaje de progreso.
La compilación requiere NASM y genera un único archivo boot.bin mediante un script build.bat en Windows o las utilidades nasm y cat en Linux. Este binario se graba luego en una unidad USB dedicada y vacía con dd (Linux/macOS), Rufus o Win32DiskImager (Windows), se arranca el equipo objetivo en modo Legacy BIOS/CSM y se espera a que el volcado alcance el 100 %. El repositorio advierte de que la herramienta sobrescribe los datos a partir del LBA 64, por lo que debe usarse exclusivamente en unidades sin información previa, y de que la capacidad de la USB debe ser suficiente para alojar la RAM completa del sistema analizado.
