
Atelier de rétro-ingénierie de firmware
Ce dépôt contient les diapositives et les supports pratiques de l'atelier sur la rétro-ingénierie de firmware organisé par Emproof, présenté à ScapyCon Automotive 2025. L'atelier s'adresse à un public technique ayant une expérience minimale en sécurité et enseigne les fondamentaux à travers des exercices pratiques et autonomes. Les sujets abordés comprennent :
Si cela vous intéresse, consultez également la série de webinaires techniques Emproof avec des exercices supplémentaires et des sessions enregistrées.
Le contenu de l'atelier a été conçu et organisé par Tim Blazytko, avec le soutien de Simran Kathpalia.
Pour configurer l'environnement, clonez le dépôt :
git clone https://github.com/emproof-com/workshop_firmware_reverse_engineering
cd workshop_firmware_reverse_engineering
Pour plusieurs exercices, nous avons besoin d'un environnement d'exécution Linux AArch64. Nous fournissons un conteneur Docker basé sur Kali Linux avec des outils courants (par exemple, GNU Binutils, Binwalk) préinstallés. Cela uniformise l'environnement entre Linux, Windows et macOS — quelle que soit l'architecture du processeur hôte. Pour démarrer le conteneur et ouvrir un shell, exécutez :
./docker_run.sh
Remarque : La première exécution peut prendre du temps pour construire l'image.
Remarque (architecture) : Le service Docker Compose définit
platform: "linux/arm64".
Sur les hôtes x86_64 (macOS/Windows/Linux Intel), Docker Desktop exécutera l'image sous émulation ; la première construction et le démarrage peuvent donc être plus lents — c'est normal. Sur les hôtes ARM64 natifs (Apple Silicon, serveurs ARM), elle s'exécute nativement et plus rapidement.
Remarque : Le conteneur Docker peut également exécuter des binaires ARMv7 (armhf). Nous installons l'environnement d'exécution armhf (chargeur dynamique + bibliothèques) dans l'image et enregistrons les gestionnaires binfmt pour
aarch64etarmvia le script de démarrage.
De plus, installez les outils graphiques suivants sur votre hôte pour les exercices interactifs de rétro-ingénierie (ils ne sont pas inclus dans le conteneur) :
Les deux outils sont disponibles pour Windows, Linux et macOS.
Remarque : Binary Ninja Free ne prend pas en charge AArch64. Pour l'analyse AArch64, utilisez Ghidra (ou une version sous licence de Binary Ninja). Par conséquent, plusieurs ateliers fournissent un binaire compagnon ARMv7 (
*.armv7) spécifiquement pour Binary Ninja Free ; ces binaires peuvent également être exécutés dans le même conteneur.
Chaque exercice est autonome dans tasks/<name>/ et comprend :
samples/ — les binaires (et parfois le code source) utilisés dans l'exercicetask.md — l'énoncé avec des instructions pas à pas et des indicesLes exercices peuvent être tentés indépendamment, mais nous fournissons un ordre recommandé (listé ci-dessous) qui augmente progressivement la difficulté et introduit de nouvelles techniques. La plupart des binaires ciblent ARMv7 (Thumb/ARM32) ou AArch64 ; lorsque c'est pertinent, les notes des exercices précisent l'architecture, les outils requis et les éventuels besoins particuliers en matière d'exécution.
Sauf indication contraire, tous les supports d'atelier de ce dépôt sont sous licence GNU General Public License, version 2 (GPL-2.0). Voir LICENSE pour le texte complet.
Certains échantillons tiers / provenant de sources externes sont exclus de la GPL et fournis uniquement pour analyse/éducation (aucune redistribution). Les voici :
Remarque : Si un sous-répertoire contient son propre fichier ou en-tête de licence, cette licence prévaut pour le contenu de ce sous-répertoire.