SFEIR

Applications Delphi : ce que Ghidra et les agents permettent

Applications Delphi : ce que Ghidra et les agents permettent

Le 13 octobre 2026, un contributeur propose sur le dépôt de REA de décoder statiquement les formulaires des applications Delphi et C++Builder. Son argument tient en une phrase : « For legacy line-of-business software this is often the single richest source of business rules »1. Pour une DSI qui hérite d'une application Delphi sans source, l'écosystème de rétro-ingénierie est plus fourni qu'on ne le croit.

Pourquoi Delphi résiste aux décompilateurs génériques

Ghidra et IDA traitent un exécutable Delphi comme un binaire x86 parmi d'autres : fonctions anonymes, classes sans nom, appels indirects à travers des tables de méthodes virtuelles. Le pseudocode obtenu se lit mal. Pourtant, un exécutable Delphi conserve après compilation une partie de ses métadonnées : informations de types à l'exécution, tables de méthodes virtuelles (VMT), structures de classes. Récupérer ces métadonnées change la lisibilité du résultat.

Les formulaires sont l'autre trésor. Une application VCL range chaque fichier .dfm dans une ressource binaire RCDATA qui commence par la signature TPF0. Selon l'issue #2810, ce flux contient l'arbre des composants, les noms des gestionnaires d'événements, les liaisons de champs et, pour les applications de base de données, le SQL en clair1. Au 17 octobre, la proposition est ouverte : REA ne décode pas encore ces formulaires.

Les outils qui restaurent les symboles

IDR (Interactive Delphi Reconstructor) extrait les symboles d'un binaire Delphi. dhrake, publié par huettenhain, s'appuie sur lui : IDR génère un script IDC à partir des symboles extraits, le script DhrakeInit l'importe dans Ghidra, puis DhrakeParseClass reconstruit une classe à partir de sa VMT2.

DelphiReSym, publié sous licence BSD-3-Clause par WenzWenzWenz, travaille directement dans Ghidra. Il restaure autant de contexte sémantique que possible à partir des métadonnées, pour faciliter la rétro-ingénierie de logiciels malveillants Delphi et d'applications legacy. Il exige Ghidra 11.3 ou plus récent, pour la prise en charge intégrée de pyghidra, et couvre de Delphi 2010 à Delphi 13 Florence, en passant par les versions XE à XE8, 10 Seattle à 10.4 Sydney, 11 Alexandria et 12 Athens ; Delphi 2009 n'a pas pu être testé faute de binaires3.

Où l'agent entre

REA ne cite pas Delphi parmi ses cibles documentées4. Il pilote Ghidra sur l'exécutable comme sur tout binaire natif. L'ordre des opérations compte : restaurez d'abord les symboles avec DelphiReSym ou avec IDR et dhrake, puis laissez l'agent lire un pseudocode où les classes, les méthodes et les types portent un nom. Sans cette étape, l'agent passe son temps à deviner ce que les outils spécialisés savent déjà.

L'agent accélère la lecture et la synthèse : rapprocher les gestionnaires d'événements des écrans, relever les requêtes SQL, proposer des règles de gestion. Il ne remplace ni DelphiReSym ni IDR, et ses conclusions se vérifient avec la méthode décrite dans lire une sortie REA.

Un workflow pour rétro-documenter

Inventoriez les exécutables et les bibliothèques, avec la version de Delphi quand elle est identifiable. Restaurez les symboles. Extrayez les formulaires et leurs requêtes avec un outil d'exploration de ressources, en attendant que REA les décode. Faites analyser le pseudocode enrichi par l'agent, puis relire les règles obtenues par les utilisateurs. La réécriture suit ensuite la démarche du hub legacy, sécurisée par un golden master alimenté par l'application d'origine.

Ouvrez tout binaire de provenance incertaine en machine virtuelle ou en conteneur : DelphiReSym a été conçu aussi pour l'analyse de logiciels malveillants, et REA laisse Ghidra analyser le fichier avec vos droits, voir REA n'est pas un sandbox. Pour le cadre juridique de la décompilation, voir clean-room ou reverse engineering et décompiler pour interopérer.

Questions fréquentes

REA prend-il en charge Delphi ?

Pas en tant que tel au 17 octobre 2026. Il pilote Ghidra sur l'exécutable, et une proposition (issue #2810) vise le décodage des formulaires VCL.

Quel outil pour retrouver les noms de classes et de méthodes ?

DelphiReSym dans Ghidra, ou IDR suivi de dhrake. Les deux exploitent les métadonnées que le compilateur Delphi laisse dans l'exécutable.

Quelles versions de Delphi sont couvertes ?

DelphiReSym annonce de Delphi 2010 à Delphi 13 Florence ; Delphi 2009 reste incertain faute de binaires de test. Vérifiez la liste à jour sur le dépôt avant de vous engager.

Les formulaires contiennent-ils des règles métier ?

Souvent : composants, événements, liaisons de données et SQL littéral y figurent. C'est la première source à exploiter sur une application de gestion Delphi.

Une application Delphi critique se rétro-documente en quelques étapes outillées avant toute décision de réécriture. Nos équipes mènent ce travail avec la Software Factory.

Sources

  1. morluto/rea, issue #2810, [Feature] Decode Delphi/C++Builder VCL form resources (TPF0 RCDATA) statically, github.com, 13 octobre 2026.
  2. huettenhain, dhrake, README, github.com, consulté le 17 octobre 2026.
  3. WenzWenzWenz, DelphiReSym, README (prérequis et versions prises en charge), github.com, consulté le 17 octobre 2026.
  4. morluto/rea, README, tableau « What you can analyze », github.com/morluto/rea, consulté le 17 octobre 2026.

Une application Delphi sans source ? Rétro-documentons-la

Échanger avec SFEIR
SFEIR AI Auteur

Articles similaires