Veille technologique
DĂ©finition: La veille technologique est un processus de recherche, de collecte, dâanalyse et de diffusion dâinformations portant sur les avancĂ©es et innovations dans un domaine technique ou scientifique. Elle permet de rester informĂ© des derniĂšres Ă©volutions, que ce soit en matiĂšre de logiciels, de langages de programmation, de matĂ©riels, de normes, ou encore de pratiques professionnelles.
Dans un secteur comme lâinformatique, en constante Ă©volution, la veille technologique est essentielle pour anticiper les changements, sâadapter aux nouvelles tendances et maintenir sa compĂ©titivitĂ©. Elle peut se faire Ă travers diffĂ©rents supports : articles spĂ©cialisĂ©s, confĂ©rences, forums, newsletters, rĂ©seaux sociaux ou encore plateformes de formation en ligne.
Jâai choisi de consacrer ma veille technologique au reverse engineering, ou rĂ©tro-ingĂ©nierie en français.
Le reverse engineering consiste Ă analyser un systĂšme existant â souvent sans disposer de sa documentation dâorigine â dans le but de comprendre son fonctionnement interne. Dans le domaine de lâinformatique, cette pratique vise gĂ©nĂ©ralement Ă Ă©tudier des logiciels, des programmes ou des firmwares, souvent Ă partir de leur version compilĂ©e, câest-Ă -dire sans accĂšs au code source.
Elle est utilisée dans de nombreux contextes tels que :
la cybersécurité (analyse de logiciels malveillants, recherche de vulnérabilités),
la décompilation de programmes,
l’analyse de protocoles rĂ©seau non documentĂ©s,
le débogage de logiciels propriétaires,
la compatibilité logicielle (faire fonctionner un ancien logiciel sur un nouveau systÚme),
Cette pratique, bien que complexe, est essentielle dans certains domaines du développement logiciel et de la sécurité informatique.
Pour ma veille technologique, jâai principalement utilisĂ© deux outils : Reddit et ChatGPT.
Chaque semaine, ChatGPT me listait les actualitĂ©s importantes liĂ©es Ă mon sujet de veille. Cela mâa permis dâavoir un rĂ©sumĂ© clair et structurĂ© des avancĂ©es rĂ©centes, tout en pouvant approfondir certains points directement via des Ă©changes.
En complĂ©ment, jâai suivi r/ReverseEngineering sur Reddit. Ce subreddit regroupe une communautĂ© spĂ©cialisĂ©e, oĂč sont partagĂ©s des projets, des dĂ©couvertes, des outils, ainsi que des discussions autour de la rĂ©tro-ingĂ©nierie. Cela mâa permis de voir des cas concrets, des techniques actuelles et des retours dâexpĂ©rience directement issus du terrain.


Ă lâorigine, je souhaitais utiliser Feedly, une plateforme bien connue de veille, mais celle-ci ne proposait pas suffisamment de contenu ou de sources pertinentes sur le thĂšme que jâavais choisi. Jâai donc optĂ© pour des outils plus interactifs et communautaires, mieux adaptĂ©s Ă mes besoins.
Jâai choisi de faire ma veille technologique sur le reverse engineering pour plusieurs raisons :
Tout dâabord, je trouve fascinant de dĂ©couvrir comment fonctionnent les programmes de lâintĂ©rieur. Comprendre leur architecture, leurs mĂ©canismes et la maniĂšre dont certaines fonctionnalitĂ©s sont implĂ©mentĂ©es permet de mieux apprĂ©hender la logique informatique dans son ensemble.
Ensuite, analyser des logiciels existants peut ĂȘtre une vĂ©ritable source dâinspiration pour mes propres projets. Cela permet non seulement dâapprendre des techniques de programmation, mais aussi de dĂ©couvrir des approches auxquelles je nâaurais pas pensĂ©.
Enfin, le processus mĂȘme du reverse engineering est intellectuellement stimulant : il demande rigueur, curiositĂ© et crĂ©ativitĂ©. Câest une discipline qui pousse Ă explorer en profondeur, Ă rĂ©soudre des Ă©nigmes techniques, et Ă dĂ©velopper un esprit critique.
Jâai ainsi commencĂ© Ă travailler (pour lâinstant, ce ne sont que des Ă©bauches) sur un projet de lecteur de musiques issues de la console V.Smile de VTech, une console Ă©ducative ancienne et trĂšs peu documentĂ©e.
Jâai dĂ©jĂ effectuĂ© quelques recherches personnelles sur le sujet, mais le projet est encore Ă ses dĂ©buts. Il existe trĂšs peu de documentation technique sur cette machine, ce qui rend l’exploration plus complexe mais aussi plus stimulante.
Je sais nĂ©anmoins que la V.Smile peut ĂȘtre Ă©mulĂ©e via lâĂ©mulateur MAME, ce qui offre une piste concrĂšte pour avancer. Pour progresser, je pense mâinspirer de logiciels similaires, conçus pour lire ou extraire les musiques de consoles rĂ©tro mieux connues, afin de comprendre les approches et outils utilisĂ©s dans ce domaine.
Â
Au cours de cette veille, j’ai pus noter quelques tendances liĂ© au reverse engineering:
1. IntĂ©gration de lâIA et des modĂšles de langage (LLMs) dans les outils de rĂ©tro-ingĂ©nierie
L’une des tendances majeures observĂ©es est lâutilisation croissante de lâintelligence artificielle, en particulier des modĂšles de langage comme les LLMs, dans les outils de rĂ©tro-ingĂ©nierie. Des projets rĂ©cents comme ReCopilot ou GPT-Decompiler utilisent ces technologies pour assister lâanalyse binaire : ils permettent, par exemple, de deviner les noms de fonctions, dâinfĂ©rer les types ou encore de gĂ©nĂ©rer du pseudo-code lisible Ă partir de code assembleur. Cette approche amĂ©liore considĂ©rablement la productivitĂ©, rend la rĂ©tro-ingĂ©nierie plus accessible Ă ceux qui ne sont pas experts et permet de gagner un temps prĂ©cieux dans lâanalyse de programmes complexes. On voit Ă©galement apparaĂźtre des plug-ins IA pour des outils populaires comme Ghidra, ou des prototypes de type CodeWhisperer pour binaire.
2. Support croissant des langages modernes (Rust, Go, Swift, etc.)
Avec la popularitĂ© croissante de langages comme Rust, Go ou Swift, une autre tendance forte est lâadaptation des outils de rĂ©tro-ingĂ©nierie Ă ces environnements. Ces langages, souvent utilisĂ©s pour des projets dans la cybersĂ©curitĂ©, lâIoT ou les systĂšmes embarquĂ©s, introduisent de nouvelles abstractions et des conventions qui rendent la rĂ©tro-ingĂ©nierie plus complexe. Par exemple, leurs compilateurs appliquent des optimisations agressives, utilisent des conventions dâappel non standards, et produisent un code machine difficile Ă analyser avec des outils classiques. Pour faire face Ă cette Ă©volution, des plateformes comme IDA Pro, Ghidra ou Binary Ninja ont commencĂ© Ă intĂ©grer un meilleur support natif pour ces langages, amĂ©liorant la dĂ©sassemblage et la dĂ©compilation.
3. Convergence entre rétro-ingénierie et fuzzing automatisé
Enfin, une convergence de plus en plus marquĂ©e entre rĂ©tro-ingĂ©nierie et fuzzing automatisĂ© se dessine. De nombreux outils modernes combinent lâanalyse statique de binaires avec du fuzzing dynamique, ce qui permet dâidentifier des vulnĂ©rabilitĂ©s logicielles de maniĂšre plus efficace. Cette approche hybride permet dâexplorer le comportement dâun programme sans avoir besoin dâen connaĂźtre parfaitement le code source, en injectant des donnĂ©es alĂ©atoires ou guidĂ©es pour provoquer des bugs ou des crashs. Des solutions comme AFL++ sont ainsi intĂ©grĂ©es dans des pipelines dâanalyse binaire, tandis que des outils comme Ghidra couplĂ©s Ă QEMU permettent de faire du fuzzing guidĂ©. Cela reprĂ©sente un bond en avant pour lâautomatisation de la dĂ©tection de failles.