
Chargeur Ghidra pour le format d'image de firmware de modem MediaTek md1img
Chargeur Ghidra pour le format d'image firmware de modem md1img de MediaTek. Actuellement, seuls les firmwares basés sur nanoMIPS sont pris en charge, mais les fonctionnalités de base peuvent fonctionner si vous choisissez manuellement une autre architecture (par exemple, MIPS) lors du chargement d'une image.
Pour les modems basés sur nanoMIPS, installez le plugin Ghidra pour l'ISA nanoMIPS avec ce chargeur avant d'essayer de charger l'image du firmware.
Dans Ghidra, importez simplement un fichier au format md1img dans le projet. Le chargeur extraira le firmware du modem et appliquera les éventuels symboles de débogage.
Après le chargement initial du firmware et l'identification des fonctions INT_InitRegions_C, memcpy et memset, exécutez les scripts MtkInitRegions.java et emulate_custom_mk_ram_info.py depuis le Script Manager (dans cet ordre) pour définir automatiquement des régions mémoire supplémentaires.
Assurez-vous que la variable d'environnement ou la propriété de projet GHIDRA_INSTALL_DIR est définie pour que Gradle fonctionne correctement dans Eclipse. Consultez https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties pour savoir où placer le fichier gradle.properties contenant cette définition de propriété.
Si vous modifiez ce projet en parallèle avec le plugin ISA nanoMIPS, ajoutez le répertoire du projet du plugin nanoMIPS au chemin de build du projet Eclipse du chargeur.
Utilisez votre installation Gradle locale ou le wrapper Gradle inclus pour compiler le projet depuis les sources. Assurez-vous de spécifier le bon répertoire d'installation de Ghidra dans la propriété GHIDRA_INSTALL_DIR.
$ ./gradlew -PGHIDRA_INSTALL_DIR=<ghidra_path>