Rétro-ingénierie logicielle
Comprendre un logiciel sans son code source : observer, décompiler, tracer. Usages, cadre juridique européen et ce que les agents de code changent.
SFEIR AI · Publié le 23 octobre 2026
De quoi on parle
La rétro-ingénierie logicielle consiste à comprendre ce que fait un programme sans disposer de son code source. Trois gestes la composent. Observer : lancer le logiciel, regarder ses fichiers, ses appels réseau, ses écrans, ses journaux. Décompiler : passer du binaire au pseudocode (code natif via Ghidra, Hopper ou IDA), des classes Java compilées aux méthodes (JADX pour Android), des assemblies .NET aux métadonnées et aux instructions CIL. Tracer : suivre l'exécution, les canaux IPC d'une application Electron, les requêtes d'une capture HAR. Le résultat est toujours une reconstruction : du pseudocode et des graphes, jamais le code source d'origine, et le fichier DISCLAIMER de REA rappelle que « decompilation, reconstruction, heuristics, and AI-assisted analysis may be incomplete or incorrect ».
Les usages que ce même fichier liste sont ceux que l'on retrouve en entreprise : recherche en sécurité, analyse de malwares et d'incidents, recherche de vulnérabilités et divulgation coordonnée, CTF et formation, interopérabilité, préservation logicielle, et « debugging or auditing software you own or are authorized to examine ». Une DSI y ajoute deux cas qui lui sont propres : vérifier ce que fait un binaire fourni par un éditeur avant de le déployer, et retrouver les règles métier d'une application dont le code source a disparu avec son auteur ou son éditeur.
Ces éléments sont des points d'attention, pas un conseil juridique : faites-les valider par votre propre juriste.
Le cadre européen
La directive 2009/24/CE sur la protection juridique des programmes d'ordinateur fixe les règles, transposées en France à l'article L122-6-1 du Code de la propriété intellectuelle. Son article 5 autorise la personne ayant le droit d'utiliser le programme à en observer, étudier et tester le fonctionnement pour en déterminer les idées et principes, au cours d'opérations auxquelles elle est autorisée (L122-6-1, III). Son article 6 autorise la décompilation quand elle est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un programme créé de façon indépendante, sous trois conditions et avec trois interdits, dont celui d'utiliser les informations pour « la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire » (L122-6-1, IV). Le dernier alinéa de l'article tranche les contrats : « Toute stipulation contraire aux dispositions prévues aux II, III et IV du présent article est nulle et non avenue. » La correction d'erreurs par l'acquéreur légitime (I) reste, elle, réservable par contrat.
La Cour de justice de l'Union européenne a précisé deux points. Le 2 mai 2012, dans SAS Institute (C-406/10), elle a jugé que ni la fonctionnalité d'un programme, ni le langage de programmation, ni le format des fichiers de données ne sont une forme d'expression protégée par le droit d'auteur, et que le titulaire d'une licence peut observer, étudier et tester le programme pour en déterminer les idées et principes. Le 6 octobre 2021, dans Top System (C-13/20), elle a jugé que l'acquéreur légitime peut décompiler tout ou partie d'un programme pour corriger des erreurs affectant son fonctionnement, y compris en désactivant une fonction qui le perturbe, dans la mesure nécessaire et dans le respect des conditions contractuelles, sans que les conditions de l'article 6 s'appliquent.
Le secret des affaires n'y fait pas obstacle en soi. La directive (UE) 2016/943, article 3, paragraphe 1, point b), transposée à l'article L151-3 du Code de commerce, range parmi les modes d'obtention licites « l'observation, l'étude, le démontage ou le test d'un produit ou d'un objet qui a été mis à la disposition du public ou qui est de façon licite en possession de la personne qui obtient l'information », sauf obligation juridiquement valide de limiter cette obtention. La licence du logiciel et le contrat avec l'éditeur restent donc à lire avant d'ouvrir le binaire ; la fiche clean-room traite du cas où l'on veut ensuite réécrire.
Ce que les agents changent
Jusqu'en 2026, la rétro-ingénierie restait un métier de spécialistes, et son coût tenait la curiosité à distance. Un serveur MCP comme REA, qui met Ghidra, JADX ou l'analyse d'une archive Electron à portée d'un agent de code, change ce coût. Connor Turland a reconstitué en une dizaine de minutes la logique du mode « Ne pas déranger » de Slack 4.52.171 (20 octobre 2026) et conclut que ce qui a changé, c'est « how much curiosity costs ». Aayush Tyagi a retrouvé les cinq pénalités du quick switcher d'Obsidian en 7 min 8 s de travail actif, pour 1,83 $ (18 octobre 2026). Ce qu'un spécialiste faisait en jours, un agent outillé le fait en minutes, et vos fournisseurs, vos concurrents et vos auditeurs disposent du même outil que vous.
La contrepartie est une sortie à relire. Sur Slack, l'agent a marqué 43 004 éléments comme inconnus ; sur une application Electron de 100 Mo, Ishank Choudhary a compté 744 limitations déclarées et deux scripts preload manqués, chargés à travers un helper que l'analyse statique n'a pas résolu. Tyagi retient que l'ordre compte plus que l'outil : écrire sa prédiction avant de lancer l'agent, vérifier que la classe minifiée trouvée est bien celle qui s'exécute, confronter la trace à une table de cas relevés à la main. Deux risques s'ajoutent : un binaire peut contenir des chaînes d'injection de prompt qui trompent l'agent sur ce que fait le programme (Crawford et McClure, arXiv, mai 2026), et les résultats d'outils partent dans le contexte du modèle, dont le fournisseur « has its own data policy » selon le README de REA. SFEIR traite ces deux points, confinement et choix du modèle, dans l'offre AI Cyber.
Questions fréquentes
La rétro-ingénierie d'un logiciel est-elle légale en France ?
Observer, étudier et tester le fonctionnement d'un logiciel que l'on est en droit d'utiliser est permis (article L122-6-1, III, du Code de la propriété intellectuelle), et la décompilation est permise pour l'interopérabilité sous conditions (IV) ou pour corriger une erreur (CJUE, Top System, 2021). Toute clause contraire aux II, III et IV est nulle. Reste interdit : produire un logiciel dont l'expression est substantiellement similaire. Ce résumé ne remplace pas l'avis de votre juriste.
Quelle différence entre rétro-ingénierie et décompilation ?
La décompilation est l'un des gestes de la rétro-ingénierie : transformer un binaire en pseudocode. La rétro-ingénierie inclut aussi l'observation du comportement (fichiers, réseau, écrans) et le traçage de l'exécution. En droit européen, l'observation et l'étude relèvent de l'article 5 de la directive 2009/24/CE, la décompilation de son article 6, aux conditions plus strictes.
Un agent de code peut-il retrouver le code source d'un programme ?
Non. Il obtient du pseudocode, des métadonnées, des graphes de modules et des traces, avec les preuves et les limites de chaque conclusion. Sur Slack, REA a marqué 43 004 éléments comme inconnus ; sur une application Electron de 100 Mo, il a manqué deux scripts preload. La sortie se relit comme une hypothèse outillée.
Que change la rétro-ingénierie par agents pour une DSI ?
Le coût de lecture d'un logiciel fermé passe de jours à minutes, pour vous comme pour les autres. Trois conséquences : vos applicatifs internes deviennent auditables à l'échelle, les binaires de vos fournisseurs deviennent vérifiables avant déploiement, et une application sans code source redevient spécifiable avant réécriture, à condition de séparer lecture du décompilé et écriture du code cible.
Sources
- EUR-Lex, directive 2009/24/CE du 23 avril 2009 concernant la protection juridique des programmes d'ordinateur (articles 5 et 6) · 2009-04-23
- Légifrance, article L122-6-1 du Code de la propriété intellectuelle : actes réservables par contrat, copie de sauvegarde, observation et test, décompilation pour l'interopérabilité, nullité des clauses contraires
Toute stipulation contraire aux dispositions prévues aux II, III et IV du présent article est nulle et non avenue.
- CJUE, 2 mai 2012, SAS Institute Inc. c. World Programming Ltd, affaire C-406/10 · 2012-05-02
- CJUE, 6 octobre 2021, Top System SA c. État belge, affaire C-13/20 · 2021-10-06
- EUR-Lex, directive (UE) 2016/943 du 8 juin 2016 sur la protection des secrets d'affaires, article 3, paragraphe 1, point b) · 2016-06-08
- Légifrance, article L151-3 du Code de commerce : modes d'obtention licites d'un secret des affaires, dont l'observation, l'étude, le démontage ou le test d'un produit · 2018-08-01
- DISCLAIMER.md de REA : usages visés et limites de l'analyse assistée · 2026-10-23
Decompilation, reconstruction, heuristics, and AI-assisted analysis may be incomplete or incorrect.
- Connor Turland, Cyrus : REA sur Slack 4.52.171, 43 004 inconnus, logique « Ne pas déranger » reconstituée en une dizaine de minutes · 2026-10-20
- Aayush Tyagi, Analytics Vidhya : REA sur Obsidian 1.14.4, 7 min 8 s, 1,83 $, vérification de la classe exécutée avant de faire confiance à la trace · 2026-10-18
The transferable lesson is the order, not the tool.
- Ishank Choudhary, HackerNoon : REA 6.4.0 sur une application Electron de 100 Mo, 744 limitations, deux preloads manqués · 2026-10-14
- Brian Crawford, Patrick McClure, « Investigating Detection and Obfuscation of Prompt Injection Attacks Against Software Reverse Engineering AI Agents », arXiv:2605.30677 · 2026-05-29
Rétro-ingénierie logicielle dans vos projets
Échanger avec SFEIRArticles liés
Clean-room ou reverse engineering : méthode et risque juridique à l'ère des agents
Rétro-ingénierie et clean-room ne se confondent pas en droit. Ce que la directive 2009/24/CE, le Code de la propriété intellectuelle et la CJUE autorisent, et pourquoi un agent qui lit le décompilé puis réécrit fragilise la défense.
Décompiler pour interopérer : l'article 6 de la directive expliqué à une DSI
Le droit européen permet de décompiler un logiciel pour le rendre interopérable, sans l'accord de son auteur. L'exception est réelle et étroite : trois conditions, trois interdits, et un régime voisin pour la correction d'erreurs.
Clauses de licence et rétro-ingénierie : ce qui est nul en France
Beaucoup de licences interdisent toute rétro-ingénierie. En France, le dernier alinéa de l'article L122-6-1 du Code de la propriété intellectuelle rend nulles certaines de ces clauses. Lesquelles, et ce qu'un contrat peut encore interdire.
Rétro-ingénierie par agents : ce que ça change pour les équipes sécurité
REA a fait de la rétro-ingénierie une session d'agent supervisée : 76 998 étoiles GitHub le 11 octobre 2026, 369 860 le 23. Ce que ça change pour une équipe sécurité : la boîte blanche devient l'avantage du défenseur, le confinement devient obligatoire, et le code interne passe en premier.
Applications legacy sans code source : comprendre avant de réécrire
Un binaire, une base de données et des utilisateurs qui connaissent le comportement : c'est souvent tout ce qui reste d'une application critique. Ce que la rétro-ingénierie par agents change à la rétro-documentation, ce qu'elle ne change pas, et la méthode pour réécrire sans perdre de règles.
CTF et crackmes : former ses équipes à la rétro-ingénierie assistée par agents
Les crackmes sont faits pour être cassés, et c'est le meilleur terrain pour apprendre la rétro-ingénierie avec un agent comme REA. Ce qu'on y apprend vraiment (relire des preuves), les règles d'un entraînement sûr, et le cadre à enseigner en même temps que l'outil.
Obfuscation et protection du code à l'ère des agents
Minification, bundling, compilation native : ces protections ralentissaient un analyste humain. Face à un agent qui pilote un décompilateur et des outils de désobfuscation, que valent-elles encore ? Ce que l'obfuscation protège toujours, et où placer la vraie défense. Approche défensive.
Votre logiciel est lisible par n'importe quel agent : guide pour éditeurs
Avec REA, un agent cartographie une application Electron, une assembly .NET ou une APK sans son code source. Ce qu'un éditeur ne peut plus cacher dans le client, où déplacer la valeur, et ce que la licence et le droit protègent encore.
Applications Electron : secrets et logique métier exposés dans l'ASAR
L'archive app.asar d'une application Electron se lit sans la lancer : un agent équipé de REA y cartographie modules, canaux IPC et add-ons natifs en une minute. Ce qu'un éditeur doit retirer de son client, et ce que l'intégrité de l'archive protège ou non.
Formats de fichiers propriétaires : rétro-documenter pour migrer les données
Vingt ans de données doivent passer sans perte d'une application à l'autre. Quand elles dorment dans un format maison non documenté, il faut le rétro-documenter d'abord. Méthode par échantillons connus, rôle des agents et de REA, et ce que dit la CJUE sur la protection des formats de fichiers.
Éditeur disparu, code source perdu : plan de sauvetage d'une application critique
L'éditeur a fermé, le mainteneur est parti, le code source a disparu, et l'application fait toujours vivre l'activité. Plan de sauvetage en quatre temps : stabiliser, récupérer ce qui existe, rétro-documenter depuis le binaire et les données, réécrire sous golden master.