Le reverse engineering pour tous
(0xinfection.github.io)- Reverse Engineering For Everyone est un ensemble de tutoriels conçu pour permettre aux personnes qui découvrent le reverse engineering de suivre les concepts et le déroulé pratique
- Le reverse engineering consiste à démonter un artefact pour en révéler la conception, l’architecture, le code ou en extraire des connaissances
- Le curriculum couvre x86, x64, ARM-32, ARM-64 et s’adresse à la fois aux débutants et aux lecteurs qui veulent revoir les concepts
- Il est structuré pour permettre de commencer sans aucune connaissance préalable et d’apprendre progressivement jusqu’aux bases intermédiaires du reverse engineering
- L’ensemble des tutoriels est disponible en PDF et MOBI, et les versions ebook sont automatiquement mises à jour lorsque de nouveaux tutoriels sont ajoutés
Objectif du reverse engineering
- Le reverse engineering est aussi appelé backwards engineering ou back engineering
- C’est le processus qui consiste à démonter l’artefact ciblé afin d’en révéler la conception, l’architecture, le code ou d’en extraire des connaissances
- Il ressemble à la recherche scientifique, à la différence que celle-ci porte sur des phénomènes naturels
- Cet ensemble de tutoriels vise à rendre l’apprentissage du reverse engineering aussi simple que possible
Curriculum et public visé
- Les principaux parcours couverts sont les suivants
- Il s’adresse aussi bien aux débutants qui veulent apprendre le reverse engineering qu’aux lecteurs qui souhaitent réviser des concepts déjà étudiés
- Les débutants peuvent partir de zéro et apprendre jusqu’aux bases intermédiaires du reverse engineering
- La barre latérale permet de consulter les sections déjà couvertes et de réviser les concepts nécessaires
1 commentaires
Avis sur Hacker News
Le reverse engineering peut se faire sans forcément regarder la cible elle-même
Un texte où Andrew Tridgell explique comment il a rétro-ingénié le protocole SMB de Microsoft avec la « French cafe technique » : https://www.samba.org/ftp/tridge/misc/french_cafe.txt
Tridge a aussi rétro-ingénié BitKeeper, le logiciel propriétaire que Linus a utilisé pendant un temps pour héberger le développement du noyau Linux. Il a découvert qu’en se connectant en telnet à une adresse:port BitKeeper au lieu d’utiliser le client dédié, on pouvait saisir
help, ce qui affichait la liste des commandes essayablesEn interrogeant le dépôt avec ces commandes, il a pu comprendre toutes les structures de données internes sans utiliser ni désassembler le logiciel propriétaire. Quand, à cause de ce reverse engineering, le propriétaire de BitKeeper, Larry McVoy, a retiré à la communauté Linux le droit de l’utiliser, Linus a fini par créer git
Le fait que
helpaffiche une liste de commandes était une bonne décision d’ingénierie/UI de la part des développeurs de BitKeeper, mais je crains que la leçon qu’on en retienne devienne « ne rendez pas vos logiciels trop conviviaux »Et puis parler à un logiciel via le réseau, c’est bien, me semble-t-il, « utiliser » ce logiciel
Je n’ai jamais pensé que le reverse engineering était une discipline qu’on apprend dans les livres. Depuis mon enfance, j’ai tout appris en pratiquant moi-même
J’ai appris à scanner et modifier la mémoire de processus de jeux vidéo avec Cheat Engine, à lire et renvoyer des paquets de MMO pour tenter de tricher, à créer des DLL et des hooks et à les injecter dans des processus, et à produire des patchs d’exécutables pour résoudre des crackmes
J’ai bricolé de vrais logiciels nécessitant une clé de licence pour supprimer cette exigence ou leur faire accepter n’importe quelle clé, analysé des formats binaires comme des fichiers de sauvegarde de jeux pour les utiliser dans des cheats, puis, au final, j’ai obtenu un vrai emploi et gagné ma vie grâce à ces compétences et ces connaissances
En pratique, c’est plutôt le genre de chose où il faut simplement essayer soi-même et y consacrer du temps. Le tutoriel d’origine est trop parcellaire, essaie de couvrir trop de choses, et ne semble pas enseigner des techniques de reverse engineering au-delà de ce qu’on peut généralement acquérir après quelques heures de bidouille
À l’inverse, beginners.re est volumineux, mais bien plus approfondi et progressif ; pour les exercices pratiques, les crackmes peuvent être meilleurs
Sur un projet de reverse engineering de jeu vidéo en cours, j’ai été mis en contact avec un moddeur autodidacte qui ne savait pas programmer. Après quelques appels Discord à parcourir ensemble un projet Ghidra et à lui expliquer les bases de l’ingénierie des programmes informatiques, il a appris bien plus qu’à l’époque où il retournait des bits avec Cheat Engine
Ensuite, il a recréé un mod assez ambitieux qui n’avait été montré que dans une vidéo YouTube vieille de 15 ans et jamais distribué ; je lui ai donné la direction, mais après avoir vu comment les pièces s’emboîtaient, il a implémenté seul le même mod dans la suite
L’expérience en ingénierie donne une perspective quand on fait du reverse engineering
Il est aussi important de noter qu’il existe beaucoup de livres, mais très peu de « bons » livres
En cinq minutes de lecture, je vois tellement d’erreurs, de concepts mal compris et d’explications complètement fausses qu’il est difficile de le recommander. Cela ressemble clairement à un texte écrit par un amateur ayant peu d’expérience dans le domaine
Comme meilleures ressources, il y a Secrets of Reverse Engineering d’Eldad Eilam, Practical Reverse Engineering pour Windows, et, pour les vraies bases, Computer Organization and Design de Patterson
Pour quelqu’un qui découvre le sujet, cela ressemble à une bonne vue d’ensemble de haut niveau
Il y avait aussi ce lien pour des ressources plus approfondies : https://github.com/mytechnotalent/Reverse-Engineering
Modification : mince, on dirait que la plupart des liens renvoient vers le texte d’origine
Cela me rappelle l’époque où je lisais des tutoriels de reversing sur searchlores.org et fravia.com
Ils sont maintenant dans les archives du Web : https://web.archive.org/web/20191201105759/http://search.lor...
Le reverse engineering Java est amusant aussi. Surtout quand il s’agit d’apps Android louches qui contrôlent des appareils électroménagers via d’étranges protocoles Bluetooth
Je connais la personne qui a écrit ce guide. Ça fait plaisir de le voir sur HN, et s’il y a des retours précis, je peux les lui transmettre
Il manque cruellement d’éléments incitant à participer et de supports visuels. Il y a beaucoup d’explications et trop de murs de texte, ce qui suffit déjà à dire que ce n’est pas une ressource « pour tous »
Par exemple, l’explication de l’analyse statique/dynamique dans la partie 2, l’introduction à IDA et aux désassembleurs, ainsi que le scénario ABC Biochemicals pourraient être beaucoup plus concis
On pourrait réduire cela à quelque chose comme : « L’analyse de malware repose sur deux techniques de base : l’analyse statique et l’analyse dynamique. L’analyse statique examine un exécutable sans le lancer ; nous ne l’aborderons pas ici, mais dans un cours ultérieur. L’analyse dynamique analyse un binaire malveillant en cours d’exécution à l’aide d’un désassembleur et d’un débogueur. Un désassembleur convertit un binaire exécutable en instructions assembleur que l’on peut déboguer et manipuler. Il existe des outils comme Hopper, OllyDbg et IDA ; IDA est un désassembleur et débogueur populaire qui prend en charge de nombreuses plateformes et de nombreux processeurs. Le reverse engineering est un domaine bien plus vaste que l’analyse de malware. À la fin, nous utiliserons IDA dans un scénario où l’on pirate de façon éthique le système de contrôle des portes blindées d’un laboratoire biochimique sensible fictif appelé ABC Biochemicals. C’est un projet de base, mais il montre comment rétro-ingénier un binaire boîte noire et trouver des solutions de conception de code plus sûres. Dans le prochain cours, nous aborderons plusieurs types de malwares. »
Le lien vers le livre ne s’ouvre pas chez moi ; il a pris une bombe de trafic HN ?