Catégories
Autour du cours22 nov. 2024
La rétro-ingénierie (angl. reverse engineering), consiste à analyser et à déconstruire un produit, un système ou un logiciel existant pour en comprendre le fonctionnement interne, souvent dans le but de reproduire ou d'améliorer l'original, d'en vérifier la sécurité ou d'assurer la compatibilité avec d’autres systèmes.
Le MOOC RIP : Rétro-ingénierie de programmes, de l’université de Lille, commence par rappeler l’essentiel sur la compilation pour nous permettre de mieux comprendre en quoi consiste… l’opération inverse !
La compilation, c’est cette étape cruciale dans la réalisation d’un logiciel qui consiste à passer du code d’un programme (écrit dans un langage informatique, comme le C ou le C++, par exemple) à un fichier binaire exécutable par la machine. C’est ce fichier exécutable que vous vend la société qui commercialise le logiciel et auquel vous faites appel lorsque vous lancez votre logiciel favori sur votre ordinateur.
Votre expérience d’informaticien-ne pourrait s’arrêter là, mais les plus curieux-ses d’entre vous, se poseront certainement la question de savoir si l’on peut, à partir de ce fichier exécutable, « remonter au code »… c’est précisément l’objet de la rétro-ingénierie ! RIP : Rétro-ingénierie de programmes vous propose d’apprendre à décortiquer les programmes. A vos scalpels numériques !
Décompiler ou désassembler un programme, faire de la rétro-ingénierie, c’est analyser un programme exécutable pour comprendre comment il a été codé et pour en saisir les processus, les algorithmes, les composants essentiels.
Quels sont les utilitaires grand public qui nous apportent de telles informations (cat, objdump…) ? Qu’est-ce que l’analyse statique (sans exécution du programme) ? Quels outils utilisent les professionnels (IDA Pro, Ghidra, Radare2, Binary Ninja…) ? A À quoi ressemble un graphe de contrôle obtenu en résultat de l’application de ces outils et comment l’interpréter ? Qu’est-ce que l’analyse dynamique (avec exécution du programme, en observant les entrées et sorties et le comportement d’un programme) ? Quels outils pour l’analyse dynamique (Wireshark, Windows sysinternals, ltrace, strace…) ? Qu’est-ce qu’un debugger et comment fonctionne-t-il (gbd, ptrace…)?
Pour vous plonger dans les entrailles du code binaire, le cours alterne entre des explications théoriques d’une grande clarté et des temps de pratique de manipulation des outils. Il offre de très nombreuses occasions, à partir de petits programmes en C, de tester ces méthodes et de comparer les informations fournies. Des challenges jalonnent l’ensemble du cours pour évaluer les connaissances acquises.
Apprendre les bases de la rétro-ingénierie en suivant le MOOC RIP : Rétro-ingénierie de programmes, de l’université de Lille, vous permettra d’acquérir des compétences très recherchées dans de nombreux domaines technologiques et industriels. La demande en experts capables de décoder des systèmes complexes est en effet croissante, notamment dans les secteurs suivants : la cybersécurité, pour tester la sécurité des systèmes, identifier les failles et déjouer des attaques potentielles, le développement logiciel et matériel, pour adapter ou améliorer des produits existants, la maintenance et le support technique, pour maintenir et adapter des systèmes sans documentation complète, et la recherche et développement, pour explorer les innovations existantes et les exploiter dans de nouveaux projets.
Pour en savoir plus et s’inscrire, cliquer ici.
Université de Lille
Début du cours : 10 décembre 2024
Fin d'inscription : 10 janvier 2025
NDLR : L’illustration de cet article a été réalisée à l’aide de Firefly, un outil d’Adobe basé sur l’intelligence artificielle.
Catégories
Autour du coursCatégories
Autour du cours