
Ghidra-Loader für das MediaTek-md1img-Modem-Firmware-Image-Format
Ghidra-Loader für das Modem-Firmware-Image-Format md1img von MediaTek. Derzeit wird nur nanoMIPS-basierte Firmware unterstützt,
grundlegende Funktionen funktionieren jedoch möglicherweise weiterhin, wenn Sie beim Laden eines Images manuell eine andere Architektur (z. B. MIPS) wählen.
Installieren Sie für Modems auf nanoMIPS-Basis das nanoMIPS-ISA-Ghidra-Plugin zusammen mit diesem Loader, bevor Sie versuchen, das Firmware-Image zu laden.
Importieren Sie in Ghidra einfach eine Datei im Format md1img in das Projekt. Der Loader extrahiert die Modem-Firmware
und wendet alle Debug-Symbole an.
Nachdem Sie die Firmware zunächst geladen und die Funktionen INT_InitRegions_C, memcpy und memset identifiziert haben,
führen Sie im Script Manager die Skripte MtkInitRegions.java und emulate_custom_mk_ram_info.py (in dieser Reihenfolge) aus,
um automatisch weitere Speicherbereiche zu definieren.
Stellen Sie sicher, dass die Umgebungsvariable GHIDRA_INSTALL_DIR oder die Projekteigenschaft definiert ist,
damit Gradle in Eclipse ordnungsgemäß funktioniert. Siehe https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties für Informationen dazu, wo die gradle.properties-Datei mit dieser Eigenschaftsdefinition abgelegt werden soll.
Wenn Sie dieses Projekt zusammen mit dem nanoMIPS-ISA-Plugin ändern, fügen Sie das Projektverzeichnis des nanoMIPS-Plugins zum Build-Pfad des Eclipse-Projekts des Loaders hinzu.
Verwenden Sie Ihre lokale Gradle-Installation oder den enthaltenen Gradle Wrapper, um das Projekt aus dem Quellcode zu erstellen.
Stellen Sie sicher, dass Sie das richtige Ghidra-Installationsverzeichnis in der Eigenschaft GHIDRA_INSTALL_DIR angeben.
$ ./gradlew -PGHIDRA_INSTALL_DIR=<ghidra_path>