
Convertir les informations de symboles et de types ELF/DWARF en JSON intermédiaire de vol3
dwarf2json est un utilitaire Go qui traite les fichiers contenant des informations de symboles et de types pour générer la sortie JSON Intermediate Symbol File (ISF) de Volatility3, adaptée à l'analyse Linux et macOS.
Pour compiler (Go 1.18+ requis) :
$ go build
Pour exécuter :
$ ./dwarf2json --help
Usage: ./dwarf2json COMMAND
A tool for generating intermediate symbol file (ISF)
Commands:
linux generate ISF for Linux analysis
mac generate ISF for macOS analysis
Options:
-h, --help Show this screen.
-v, --version Show tool and output schema version.
Remarque : le traitement de fichiers DWARF volumineux nécessite un minimum de 8 Go de RAM.
dwarf2json prend en charge le traitement des informations DWARF et de table des symboles provenant de fichiers ELF, ainsi que des symboles issus de fichiers d'entrée System.map, afin de produire un ISF pour l'analyse Linux.
L'utilisateur peut choisir d'inclure les symboles, les types ou les deux pour chaque fichier d'entrée.
$ ./dwarf2json linux --help
Usage: dwarf2json linux [OPTIONS]
--elf PATH ELF file PATH to extract symbol and type information
--elf-symbols PATH ELF file PATH to extract only symbol information
--elf-types PATH ELF file PATH to extract only type information
--system-map PATH System.Map file PATH to extract symbol information
Par exemple, pour inclure les symboles et les types d'un fichier DWARF de noyau Linux donné :
$ ./dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-4.4.0-137-generic > output.json
Les décalages de symboles extraits des informations de la table des symboles priment sur ceux extraits des informations DWARF. Ainsi, les symboles extraits des fichiers spécifiés avec l'option --elf-symbols priment sur les symboles extraits des fichiers spécifiés avec --elf. Les décalages de symboles provenant de System.Map, spécifiés avec l'option --system-map, ont la priorité la plus élevée. En cas de conflit entre les différentes sources d'informations de symboles, le décalage de System.Map sera utilisé.
La fourniture de plusieurs fichiers d'entrée pour une option donnée est autorisée. Par exemple, ./dwarf2json --elf file1 --elf file2 ... traiterait à la fois file1 et file2. En cas d'informations de symboles ou de types conflictuelles, les données du dernier fichier spécifié dans l'invocation de la commande priment.
dwarf2json prend en charge le traitement des informations DWARF et de table des symboles provenant de fichiers Mach-O, afin de produire un ISF pour l'analyse macOS.
L'utilisateur peut choisir d'inclure les symboles, les types ou les deux pour chaque fichier d'entrée.
$ ./dwarf2json mac --help
Usage: dwarf2json mac [OPTIONS]
--arch NAME architecture for universal FAT files. NAME is one of {i386|x86_64}
--macho PATH Mach-O file PATH to extract symbol and type information
--macho-symbols PATH Mach-O file PATH to extract only symbol information
--macho-types PATH Mach-O file PATH to extract only type information
Par exemple, pour inclure les symboles et les types d'un fichier DWARF de noyau macOS donné et les symboles d'un noyau macOS :
$ ./dwarf2json mac --macho /path/kernel.dSYM/Contents/Resources/DWARF/kernel \
--macho-symbols /path/kernel > output.json
Les décalages de symboles extraits des informations de la table des symboles priment sur ceux extraits des informations DWARF. Ainsi, les symboles extraits des fichiers spécifiés avec l'option --macho-symbols priment sur les symboles extraits des fichiers spécifiés avec --macho.
La fourniture de plusieurs fichiers d'entrée pour une option donnée est autorisée. Par exemple, ./dwarf2json --macho file1 --macho file2 ... traiterait à la fois file1 et file2. En cas d'informations de symboles ou de types conflictuelles, les données du dernier fichier spécifié dans l'invocation de la commande priment.
Lors du traitement de binaires universels FAT Mach-O, l'option --arch doit être utilisée pour sélectionner l'architecture de l'un des fichiers Mach-O intégrés.
Par exemple, la génération d'un fichier JSON ISF pour l'architecture i386 d'un kit de débogage du noyau OS X 10.7 peut être effectuée avec :
$ ./dwarf2json mac --arch i386 \
--macho mach_kernel.dSYM/Contents/Resources/DWARF/mach_kernel \
--macho-symbols mach_kernel > mach_kernel.json