
ELF/DWARF-Symbol- und Typinformationen in vol3s intermediäres JSON konvertieren
dwarf2json ist ein Go-Programm, das Dateien mit Symbol- und Typinformationen verarbeitet, um Volatility3 Intermediate Symbol File (ISF) JSON-Ausgabe für die Linux- und macOS-Analyse zu erzeugen.
Zum Erstellen (Go 1.18+ erforderlich):
$ go build
Zum Ausführen:
$ ./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.
Hinweis: Die Verarbeitung großer DWARF-Dateien erfordert mindestens 8 GB RAM.
dwarf2json unterstützt die Verarbeitung von DWARF- und Symboltabelleninformationen aus ELF-Dateien sowie von Symbolen aus System.map-Eingabedateien, um ISF für die Linux-Analyse zu erzeugen.
Der Benutzer kann für jede Eingabedatei auswählen, ob Symbole, Typen oder beides einbezogen werden sollen.
$ ./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
Um beispielsweise Symbole und Typen für eine bestimmte Linux-Kernel-DWARF-Datei einzubeziehen, kann Folgendes verwendet werden:
$ ./dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-4.4.0-137-generic > output.json
Symbol-Offsets für Symbole, die aus Symboltabelleninformationen extrahiert wurden, haben Vorrang vor jenen, die aus DWARF-Informationen extrahiert wurden. Somit haben Symbole, die aus Dateien extrahiert werden, die mit dem Flag --elf-symbols angegeben wurden, Vorrang vor Symbolen aus Dateien, die mit --elf angegeben wurden. Symbol-Offsets für Symbole aus System.Map, die mit dem Flag --system-map angegeben wurden, haben die höchste Priorität. Bei einem Konflikt zwischen den verschiedenen Symbolinformationsquellen wird der Offset aus System.Map verwendet.
Die Angabe mehrerer Eingabedateien für ein bestimmtes Flag ist zulässig. Beispielsweise würde ./dwarf2json --elf file1 --elf file2 ... sowohl file1 als auch file2 verarbeiten. Wenn widersprüchliche Symbol- oder Typinformationen auftreten, haben die Daten aus der zuletzt im Befehlsaufruf angegebenen Datei Vorrang.
dwarf2json unterstützt die Verarbeitung von DWARF- und Symboltabelleninformationen aus Mach-O-Dateien, um ISF für die macOS-Analyse zu erzeugen.
Der Benutzer kann für jede Eingabedatei auswählen, ob Symbole, Typen oder beides einbezogen werden sollen.
$ ./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
Um beispielsweise Symbole und Typen für eine bestimmte macOS-Kernel-DWARF-Datei sowie Symbole aus einem macOS-Kernel einzubeziehen, kann Folgendes verwendet werden:
$ ./dwarf2json mac --macho /path/kernel.dSYM/Contents/Resources/DWARF/kernel \
--macho-symbols /path/kernel > output.json
Symbol-Offsets für Symbole, die aus Symboltabelleninformationen extrahiert wurden, haben Vorrang vor jenen, die aus DWARF-Informationen extrahiert wurden. Somit haben Symbole, die aus Dateien extrahiert werden, die mit dem Flag --macho-symbols angegeben wurden, Vorrang vor Symbolen aus Dateien, die mit --macho angegeben wurden.
Die Angabe mehrerer Eingabedateien für ein bestimmtes Flag ist zulässig. Beispielsweise würde ./dwarf2json --macho file1 --macho file2 ... sowohl file1 als auch file2 verarbeiten. Wenn widersprüchliche Symbol- oder Typinformationen auftreten, haben die Daten aus der zuletzt im Befehlsaufruf angegebenen Datei Vorrang.
Bei der Verarbeitung von universellen Mach-O-FAT-Binärdateien muss das Flag --arch verwendet werden, um die Architektur für eine der eingebetteten Mach-O-Dateien auszuwählen.
Um beispielsweise eine ISF-JSON-Datei für die i386-Architektur eines OS-X-10.7-Kernel-Debug-Kits zu erzeugen, kann Folgendes verwendet werden:
$ ./dwarf2json mac --arch i386 \
--macho mach_kernel.dSYM/Contents/Resources/DWARF/mach_kernel \
--macho-symbols mach_kernel > mach_kernel.json