présentation
L'outil BareMetal RAM Dumper est un outil bare-metal x86 conçu pour démarrer à partir d'un disque ou d'une clé USB et pour extraire la mémoire RAM du système directement sur le support de démarrage. Il utilise des interruptions BIOS pour démarrer et effectuer des opérations de disque, et entre en mode irréel pour accéder à la mémoire au-dessus de la barrière de 1 Mo.
fondements techniques
Cet outil repose sur une architecture spécifique, avec un chargeur d'amorçage personnalisé qui démarre directement à partir du BIOS (Legacy CSM), sans nécessiter de système d'exploitation. Il utilise le mode irréel pour accéder et lire les adresses de mémoire physique 32 bits. La carte de mémoire est analysée à l'aide de l'interruption BIOS INT 0x15 E820 pour détecter les régions de mémoire RAM valides et éviter de dumping la mémoire réservée ou la mémoire-mappée E/S.
implémentation et compilation
L'outil est composé de deux étapes : stage1.asm et stage2.asm. Le premier initialise les registres de segment, configure la pile et utilise l'interruption Extended Read (INT 0x13 AH=0x42) pour charger stage2 à partir du LBA 1 dans la mémoire à l'adresse 0x8000. Ensuite, il saute à stage2. Le code de stage2.asm est responsable de la logique principale, y compris la requête du BIOS pour le support EDD, l'obtention de la carte de mémoire, le calcul de la taille de mémoire RAM maximale, la boucle à travers la mémoire RAM en blocs de 32 Ko, et l'écriture des données sur le disque à l'aide de l'écriture étendue.
utilisation et limites
Pour utiliser cet outil, il est nécessaire d'avoir NASM installé pour compiler le projet. Sur Windows, il suffit d'exécuter le script de construction fourni (build.bat), tandis que sur Linux, vous pouvez exécuter les commandes nasm pour compiler les fichiers stage1.asm et stage2.asm. Il est important de noter que cet outil écrit des données brutes directement sur le lecteur de démarrage à partir du secteur 64, ce qui peut écraser les données existantes. Il est donc recommandé d'utiliser une clé USB dédiée et vide pour cet usage.
nasm -f bin stage1.asm -o stage1.bin
nasm -f bin stage2.asm -o stage2.bin
cat stage1.bin stage2.bin > boot.bin
Une fois le projet compilé, il est possible de l'écrire sur une clé USB à l'aide d'outils tels que dd sur Linux/macOS ou Rufus/Win32DiskImager sur Windows. Il est essentiel de s'assurer que la clé USB a suffisamment d'espace pour contenir la mémoire RAM du système.
sudo dd if=boot.bin of=/dev/sdX bs=512