Automated Reverse Engineering
Instructeur: Kyle Martin
Dates: 15 au 18 juin 2026
Lieu: Hilton DoubleTree Montreal
Capacité: 25
Ce cours, destiné aux rétro-ingénieurs expérimentés, exploite les dernières avancées en théorie moderne d'analyse de programmes pour simplifier et automatiser de nombreuses tâches quotidiennes de rétro-ingénierie. Nous couvrirons comment modéliser des modèles de langage de haut niveau et les identifier dans les binaires quelle que soit l'architecture cible, automatiser l'analyse source-to-sink, construire une collection de scripts à exécuter sur n'importe quel binaire que vous ouvrez pour extraire les attributs clés du programme, et bien plus encore. Non seulement vous apprendrez le comment et le pourquoi de la résolution de problèmes, mais vous apprendrez également comment et quand l'apprentissage automatique peut être appliqué en toute sécurité pour approximer des solutions. Nous discuterons de la façon d'utiliser l'automatisation dans des projets de rétro-ingénierie à long terme sur de grandes bases de code et d'exploiter les annotations utilisateur pour progresser de manière incrémentale vers vos objectifs, ainsi que le traitement par lots pour prendre des décisions et des rapports rapides et automatisés sur les binaires au fur et à mesure qu'ils arrivent.
Sujets et exercices disponibles
- Exercices débutant, intermédiaire, avancé et du monde réel
- Exploitation des représentations intermédiaires pour la rétro-ingénierie automatisée
- Suivi de la façon dont les données sont déplacées et manipulées dans un programme
- Comment identifier les structures, tableaux et autres types de données dans un programme automatiquement et multi-architectures
- Récupération des classes et modèles d'héritage, et membres publics vs privés
- Reconnaissance des pointeurs et de leurs données
- Localisation automatique des constantes et fonctions cryptographiques
- Déduction et application automatiques de structures de données
- Automatisation de l'analyse source-to-sink
- Génération de métadonnées utiles sur les programmes et fonctions
- Utilisation et automatisation du débogueur
- Script de requêtes pour les binaires
- Forme d'affectation statique unique (Single Static Assignment)
- Recherche de données et références
- Analyse de flux de données
- Analyse interprocédurale
- Écriture de plugins pour Binary Ninja
- Écriture de plugins d'architecture personnalisés
- Support de nouveaux formats binaires
- Correction binaire / transformations / dépaquetage
- Personnalisation de l'analyse avec des workflows
- Migration depuis d'autres outils
- Traitement par lots
- Intégration de l'apprentissage automatique et de l'intelligence artificielle dans les scripts d'analyse statique de programmes
- Et plus encore!
Exigences
Matériel/Logiciel:
- Un ordinateur portable capable d'exécuter Binary Ninja (Ubuntu 22.04/24.04 x64; Windows 10/11 x64; MacOSX 11+ x64, MacOSX 14+)
- (Optionnel) Une VM pour exécuter des binaires (la plupart des binaires sont également fournis pour Linux, Mac et Windows, bien que nous nous concentrions souvent uniquement sur les versions Linux)
Prérequis:
- Les étudiants doivent être capables de lire et d'écrire des scripts Python de niveau intermédiaire
- Une base en rétro-ingénierie, recherche de vulnérabilités, analyse de micrologiciel ou similaire est fortement recommandée
- Les étudiants doivent être familiers avec le fonctionnement de la pile, ce qu'est le tas, et certaines classes de vulnérabilités de base (débordement de tampon, écrasement de pile, etc.)
- Des exercices guidés rappelant les défis CTF de rétro-ingénierie de faible difficulté sont intégrés au cours, et les étudiants devraient être capables de dériver leurs propres solutions
Objectifs d'apprentissage
- Identifier avec précision les modèles de code courants (tels que l'indexation dans un tampon, l'accès à un membre de structure et diverses primitives de flux de contrôle)
- Améliorer la précision de la décompilation grâce à des scripts, en annotant les types, fonctions et variables
- Identifier et tenir compte des erreurs courantes du décompilateur (théorie de la décompilation)
- Localiser et analyser diverses classes de bugs telles que les débordements de tampon et les use-after-free
- Automatiser les tâches de rétro-ingénierie telles que la localisation de tous les appels à une fonction, la vérification des paramètres non bornés et l'analyse source-to-sink
- Créer des plugins pour Binary Ninja afin de personnaliser l'expérience de rétro-ingénierie, prendre en charge de nouvelles architectures et plateformes, automatiser des tâches, et bien plus encore!
BIO
Kyle Martin (@ElykDeer) est un ingénieur logiciel en cybersécurité et éducateur, axé sur la simplification de tout ce qui concerne le "binaire" pour les humains. Kyle a commencé à enseigner à 15 ans lorsqu'il est devenu chef conseiller dans un camp informatique estival, réécrivant leurs cours de C++ et d'assemblage x86. Plus récemment, Kyle a dirigé le groupe d'étudiants derrière CSAW CTF et CSAW Red, y compris l'initiative de formation interne permettant aux étudiants d'écrire les défis renommés qui ont distingué ces compétitions. Maintenant, Kyle dirige des formations axées sur la rétro-ingénierie à l'échelle internationale. Kyle apporte avec lui l'expertise et le soutien de toute l'équipe Vector 35, créateurs de Binary Ninja.
Pour s'inscrire
Cliquez ici pour vous inscrire.
