Manuel VBReFormer Desktop
Manuel d'utilisation de VBReFormer Desktop : installer, activer sa licence, lire les sept vues, analyser un binaire, exporter un projet VB6 rechargeable.
Mis à jour le 20/09/202614 chapitres
L'application installée sur votre poste Windows. Elle ouvre vos exécutables Visual Basic 5 et 6, en reconstruit le code source, et vous rend un projet que l'IDE VB6 rouvre — avec l'outillage complet : octets, ressources, concepteur, graphes, références croisées et correctifs binaires.
1. Installer
VBReFormer Desktop est livré sous forme d'installateur MSI, un par langue d'interface. Le paquet est autonome : il embarque tout ce dont il a besoin, vous n'avez aucun framework à installer au préalable.
| prérequis | |
|---|---|
| Système | Windows 10 version 1607 ou plus récent, ou Windows 11 |
| Architecture | x64 |
| Framework | aucun — le paquet est autonome |
| Connexion | nécessaire pour la décompilation et la validation de licence |
| Langues d'interface | français, anglais, espagnol |
Windows XP, Vista, 7 et 8 ne sont pas pris en charge. L'application repose sur une plateforme qui exige Windows 10 au minimum. Si votre poste est plus ancien, VBReFormer Online fonctionne dans n'importe quel navigateur, sur n'importe quel système — c'est la voie recommandée dans ce cas.
Où travaille le moteur
L'application est locale ; la reconstruction du code, elle, s'exécute sur nos serveurs. C'est ce que signifie le nom de l'édition — Desktop + Cloud. Tout ce qui se lit dans le fichier (le format, les octets, le désassemblage, les ressources) est calculé sur votre poste ; tout ce qui se reconstruit passe par le service.
La boîte Aide ▸ À propos vous dit à tout moment la version du moteur joint, celle du contrat, et la liste des capacités servies — utile quand une fonction n'apparaît pas : si elle n'est pas dans cette liste, ce n'est pas l'interface qui la refuse.
2. Activer votre licence
Sans licence, l'application s'ouvre et travaille : vous pouvez explorer un binaire, lire le désassemblage en entier, les octets, les ressources et le concepteur. C'est la reconstruction du code VB6 et l'export du projet que la licence ouvre.
Un poste à la fois
Une licence VBReFormer ouvre un poste de travail à la fois. Si vous l'utilisez déjà ailleurs, l'application vous le dit clairement et vous propose deux issues : transférer la licence sur ce poste depuis votre compte, ou ajouter un poste.
C'est un refus doux : vous avez payé, il ne vous manque rien. Le message le dit ainsi plutôt que de vous renvoyer une erreur technique.
Un navigateur ouvert sur VBReFormer Online compte également pour un poste : le studio web et l'application de bureau consomment la même licence.
3. La fenêtre
- Ouvrez un binaire. Fichier ▸ Ouvrir un binaire VB6 (
Ctrl+O). Les formats acceptés sont.exe,.dll,.ocxet.scr. La barre d'état affiche l'analyse en cours, puis le nom du fichier et sa forme de compilation — code natif ou P-code. - Parcourez le panneau PROJET. À gauche, le binaire est présenté comme VB6 le voyait : formulaires, classes, modules, et leurs procédures. L'arbre se peuple à la demande — déplier un nœud demande ses enfants ; rien n'est calculé d'avance, ce qui garde l'ouverture rapide même sur un gros exécutable.
- Sélectionnez une procédure. Les vues de ce nœud s'affichent à droite. Si aucune vue n'est servie pour un nœud, le motif est écrit à l'écran plutôt qu'un panneau vide.
Les panneaux du bas
| onglet | à quoi il sert |
|---|---|
| Sortie | le journal des opérations. Il conserve la langue dans laquelle chaque ligne a été écrite, même si vous changez la langue de l'interface — un journal est un relevé, pas un affichage. |
| Diagnostics | ce que le moteur a refusé de faire, et pourquoi. Le réflexe à avoir dès qu'un résultat surprend. |
| Analyseur | les références croisées : appelants d'une procédure, occurrences d'un symbole. Le résultat est cliquable. |
La visibilité des membres
Chaque membre de l'arbre porte sa visibilité telle que le binaire la déclare — (Public),
(Private), (Friend). Ce sont des mots-clés VB6 : ils ne sont pas traduits. Un membre dont la
visibilité n'a pas pu être lue ne porte aucune marque : on n'écrit pas ce qu'on ne sait pas.
4. Les sept vues
Elles sont rangées en trois familles, et cette séparation vous dit d'où vient ce que vous lisez. C'est la chose la plus utile à comprendre.
Famille « Code » — reconstruit par analyse
| vue | ce qu'elle montre | quand la consulter |
|---|---|---|
| Visual Basic 6 | la source reconstruite, structurée | par défaut — c'est ce que vous cherchez |
| IR | la représentation intermédiaire | pour voir ce que le moteur a compris |
| Assembleur | les instructions machine x86 | pour voir ce que le processeur exécute |
| P-code | les opcodes de la machine virtuelle VB6 | binaires P-code uniquement |
Descendre cette liste, c'est remonter vers la machine. En cas de doute sur une ligne : Visual Basic 6 dit l'intention, Assembleur dit le fait.
Famille « Fichiers du projet » — lu, pas déduit
Concepteur (.frm), Projet (.vbp) et Structure. Rien ici ne passe par la reconstruction de code : tout a été lu dans des tables du binaire, et ce qui n'a pas pu l'être est écrit en toutes lettres plutôt que comblé. C'est la famille la plus fiable du produit, et celle qui ne dépend d'aucune inférence.
Famille « Ressources »
Voir le chapitre 9.
5. Ce que la compilation garde, et ce qu'elle jette
Ce chapitre explique pourquoi certaines parties de votre code ressortent presque intactes et d'autres avec des noms techniques. La règle est simple :
Ce dont Visual Basic a besoin pendant l'exécution, il l'a écrit dans le fichier : VBReFormer le retrouve. Ce dont il n'avait plus besoin après la compilation, il l'a jeté — et personne ne peut le retrouver.
Ce qui survit : noms des formulaires, classes et modules · noms des contrôles · gestionnaires d'événements · membres publics des classes · toutes les propriétés d'interface · appels au runtime VB (635 fonctions) · API Win32 (15 680 signatures) · la structure du code · les chaînes.
Ce qui n'est pas dans le fichier : les commentaires · les noms des variables locales · les noms
des paramètres · les constantes nommées, remplacées par leur valeur · les noms des procédures de
modules .bas · l'indentation d'origine · Option Explicit et les Enum.
La conséquence pratique. Vos formulaires ressortent très lisibles. Vos modules
.basressortent justes, mais avec des noms techniques (proc_42C506). La fonction Renommer (F2) existe pour ça, et elle propage le nouveau nom à tous les sites d'appel du projet — voir le chapitre 7.
Deux exemples vérifiables
Les extraits ci-dessous viennent de SETUP1.EXE, l'assistant d'installation livré avec Visual Basic 6. Microsoft en distribue le code source dans le même dossier — vous pouvez donc refaire la comparaison vous-même.
Une procédure de module .bas
Source d'origine, COMMON.BAS :
Sub AddDirSep(strPathName As String)
If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
strPathName = RTrim$(strPathName) & gstrSEP_DIR
End If
End Sub
Rendu par VBReFormer :
Public Sub proc_42C506(ByRef arg_8 As String)
If ((Right(Trim(arg_8), Len("/")) <> "/") And (Right(Trim(arg_8), Len("\")) <> "\")) <> 0 Then
arg_8 = (RTrim$(arg_8) & "\")
End If
End Sub
Logique identique, ligne pour ligne. Right, Trim, Len, RTrim$ sont nommés ; le passage
ByRef est correctement déduit. En revanche le nom de la procédure et celui du paramètre sont perdus,
et les constantes apparaissent sous leur valeur — c'est le compilateur qui les a remplacées, pas
VBReFormer.
Un gestionnaire d'événement
Source d'origine, BEGIN.FRM :
Private Sub cmdExit_Click()
ExitSetup Me, gintRET_EXIT
End Sub
Rendu par VBReFormer :
Private Sub cmdExit_Click()
Set var_18 = Me
basSetup1.proc_41CE2D var_18, var_1C
End Sub
Le nom du formulaire, celui du bouton et celui du gestionnaire sont intacts ; Me est reconnu ;
le module appelé est nommé, ce qui vous dit où aller. Seule la procédure appelée, qui vit dans un
.bas, garde son nom d'adresse.
Les marqueurs
VBReFormer ne devine jamais. Une valeur qui ne peut pas être établie est marquée plutôt qu'inventée — une valeur vraisemblable et fausse est le pire résultat qu'un décompilateur puisse produire.
| marqueur | signification | que faire |
|---|---|---|
proc_42C506 |
procédure désignée par son adresse | la renommer (F2) |
var_18, arg_8 |
variable locale ou paramètre | lire son usage, puis renommer |
vtbl_3C |
appel par table virtuelle non résolu | l'explorateur d'objets dit souvent de quelle bibliothèque il s'agit |
? |
valeur non établie | consulter la vue Assembleur au même endroit |
Un fichier contenant un
?sera refusé par l'IDE VB6. Le marqueur est là pour que vous décidiez, pas pour être recompilé tel quel.
6. Les outils d'analyse
C'est ici que l'édition bureau se distingue le plus : elle offre un établi complet, là où le studio web se concentre sur lire, décompiler et exporter.
| outil | raccourci | ce qu'il vous apporte |
|---|---|---|
| Analyser les références | Maj+F12 |
appelants d'une procédure, occurrences d'un symbole — résultat cliquable, et la couverture est chiffrée : ce que l'analyse ne voit pas est compté, pas tu |
| Liste des symboles | Ctrl+Maj+S |
l'inventaire complet, filtrable par nature et par périmètre — il distingue les noms lus des noms synthétisés |
| Graphe des appels | Ctrl+Maj+A |
qui appelle quoi, à trois échelles, avec filtres appelants / appelés |
| Graphe de flot | Ctrl+Maj+G |
la forme d'une procédure : blocs, boucles, arêtes arrière, blocs inatteignables |
| Explorateur d'objets | Ctrl+Maj+B |
« où est défini ceci ? » quand la réponse est hors du binaire |
| Navigateur d'API Win32 | Ctrl+Maj+P |
prototypes, alias et notes des déclarations Win32 |
| Bibliothèques citées | Ctrl+K |
ce dont le binaire dépend |
| Programmes VB du disque | Ctrl+L |
retrouver les exécutables VB d'un dossier |
| Rechercher | Ctrl+Maj+F |
recherche de texte dans les vues servies |
| Signets | Ctrl+F2 |
marquer des endroits, y revenir (F8 / Maj+F8) |
| Navigation avant / arrière | Alt+← Alt+→ |
comme un navigateur |
Pourquoi la couverture est chiffrée. Le graphe d'appels natif voit les appels directs ; il ne voit pas les appels par table virtuelle ni les pointeurs de fonction. Plutôt que de présenter une liste partielle comme complète, VBReFormer affiche ce qu'il omet, compté. Vous savez ainsi jusqu'où faire confiance au résultat.
7. Renommer
C'est le geste central du travail sur un binaire : le décompilateur vous rend la logique, vous lui
rendez les noms. F2 sur un symbole, ou depuis la liste des symboles.
La boîte affiche trois choses que les décompilateurs cachent d'ordinaire :
- l'origine du nom courant — donné par vous, inféré par le décompilateur, ou reconstruit ;
- les propositions du décompilateur, chacune avec sa priorité et la source d'où elle vient ;
- le nom d'origine, sur lequel on peut toujours revenir.
Le renommage est global. Renommez une procédure une fois, et les sites d'appel des autres modules suivent — y compris ceux que vous n'avez pas encore ouverts.
Un renommage refusé l'est toujours avec son motif. Deux cas fréquents : le moteur n'annonce pas la capacité de renommer sur ce document, ou bien la vue courante ne porte que des fragments lexicaux — de quoi colorer le texte, pas de quoi désigner une entité. Dans les deux cas le message le dit, plutôt que de ne rien faire.
8. Octets et correctifs binaires
Naviguer ▸ Voir les octets (Ctrl+Maj+H) ouvre la vue hexadécimale annotée : elle ne montre pas
que des octets, elle dit ce que chaque zone représente. Aller à l'adresse (Ctrl+G) vous y emmène
directement.
Modifier l'exécutable
Le régime « brut » permet d'écrire des octets et de produire un exécutable modifié. Il est encadré par quatre refus, et chacun protège quelque chose :
| refus | pourquoi |
|---|---|
| Le fichier analysé n'est jamais la destination | le moteur ne l'ouvre jamais en écriture ; l'interface ne défait pas cette garantie |
| Écraser un fichier existant est confirmé | « cela ne se défait pas » |
| La signature Authenticode sera supprimée | votre accord est demandé avant ; vous pourrez re-signer avec votre propre certificat |
| Un patch refusé n'écrit rien du tout | pas de fichier à moitié écrit |
Le studio web ne propose pas les correctifs binaires ni la vue hexadécimale : ce sont deux fonctions propres à l'édition bureau.
9. Ressources et concepteur
Les ressources du binaire
Icônes, curseurs, bitmaps, tables de chaînes, informations de version : tout ce qu'un fichier .res
aurait porté. Chaque entrée affiche son type, sa taille et ce qu'on sait en faire, et l'extraction est
possible entrée par entrée ou en totalité.
Une ressource que le produit ne sait pas peindre reste listée et s'affiche en octets : elle n'est jamais cachée. Et si des entrées du répertoire n'ont pas pu être suivies, un avertissement le dit — vous savez alors que la liste est plus courte que ce que le binaire porte.
Le concepteur de formulaires
La surface du formulaire est peinte telle que VB6 l'aurait affichée, à partir des propriétés lues dans
le binaire, dans le bon ordre de peinture. L'image du formulaire s'exporte (Ctrl+I).
Les propriétés sont en lecture seule : VBReFormer sait lire la surface d'un formulaire, il ne sait pas encore la réécrire dans l'exécutable compilé. Voir le chapitre 13.
10. Exporter le projet
- Vérifiez d'abord le panneau Diagnostics. Il dit ce qui n'a pas pu être fait. Le lire avant l'export évite de chercher plus tard pourquoi un élément manque.
- Fichier ▸ Exporter le projet VB6. Choisissez un dossier de destination vide.
- Lisez les notes d'export. VBReFormer écrit ce qu'il n'a pas pu récupérer, et pourquoi. Certaines informations — les références externes, les options de compilation, le mode de démarrage — ne sont dans aucune structure du binaire : elles n'ont pas été effacées, elles n'y ont jamais été. Elles sont signalées plutôt qu'inventées.
- Ouvrez le
.vbpdans Visual Basic 6. Les en-têtes que l'IDE exige (VERSION,Attribute VB_Name) sont écrits. Si une référence manque, ajoutez-la par Projet ▸ Références.
Deux refus d'écriture qui vous protègent. Les fichiers VB6 s'écrivent en ANSI 1252. VBReFormer refuse d'écrire si ce jeu de caractères est indisponible sur la machine — écrire dans un autre produirait un fichier faux en silence — ou si un caractère de votre code n'y existe pas, auquel cas il vous dit lequel et son point de code.
11. Les options
| réglage | ce qu'il fait |
|---|---|
| Taille d'indentation | ne vaut que pour le code reconstruit : le désassemblage, l'IR, le P-code, le bloc concepteur et le .vbp ne sont pas mis en forme par cet éditeur. |
| Page de codes (concepteur) | la page dans laquelle sont lus les légendes et textes du concepteur. Un binaire VB6 ne déclare nulle part la sienne — mesuré sur 236 binaires. Si les libellés d'un formulaire s'affichent en caractères incohérents, c'est ce réglage qu'il faut changer. |
Regrouper sous With…End With |
désactivé par défaut. La sortie est pleinement qualifiée (Frame1.Caption), parce que le compilateur dissout les With et que les rebâtir serait une supposition. Activez-le si vous préférez la lisibilité à la littéralité. |
| Coloration syntaxique | un rôle, une couleur — les rôles viennent du moteur, qui dit ce que chaque fragment est. Notation #RRGGBB ; une palette invalide n'est pas appliquée à moitié. |
| Langue de l'interface | français, anglais, espagnol — le changement est immédiat. |
Les réglages de rendu voyagent avec chaque demande d'affichage ; ils ne sont jamais posés comme un état de session. Changer l'indentation ne réanalyse donc rien.
12. Raccourcis
| raccourci | action |
|---|---|
Ctrl+O |
Ouvrir un binaire VB6 |
F2 |
Renommer le symbole sous le curseur |
Maj+F12 |
Analyser les références |
Ctrl+Maj+F |
Rechercher dans le projet |
Ctrl+G |
Aller à l'adresse |
Ctrl+Maj+H |
Voir les octets |
Ctrl+Maj+S |
Liste des symboles |
Ctrl+Maj+B |
Explorateur d'objets |
Ctrl+Maj+P |
Navigateur d'API Win32 |
Ctrl+Maj+G |
Graphe de flot de contrôle |
Ctrl+Maj+A |
Graphe des appels |
Ctrl+K |
Bibliothèques citées |
Ctrl+L |
Programmes VB d'un dossier |
Ctrl+F2 |
Poser ou retirer un signet |
F8 / Maj+F8 |
Signet suivant / précédent |
Ctrl+Maj+F2 |
Liste des signets |
Alt+← / Alt+→ |
Navigation arrière / avant |
Ctrl+I |
Exporter l'image d'un formulaire |
13. Limites connues
Modifier l'interface d'un exécutable compilé
VBReFormer lit la surface d'un formulaire et toutes ses propriétés — il ne sait pas encore les réécrire dans l'exécutable. Le remplacement d'une ressource embarquée et l'ajout d'une propriété cachée sans recompiler ne sont pas disponibles. Les correctifs binaires — écrire des octets à une adresse — le sont, eux (chapitre 8).
Les ressources .ctx d'UserControl
Aucun fichier .ctx n'est écrit à l'export. Si votre projet contient des UserControl avec des
ressources persistées, cette partie est à reconstituer.
Windows antérieur à 10
Utilisez VBReFormer Online : un navigateur suffit, quel que soit le système.
Ce qu'aucun décompilateur ne franchit
Commentaires, noms de variables locales, constantes nommées : ils ne sont pas dans le fichier. Voir le chapitre 5.
14. Questions fréquentes
Une fonction du menu ne répond pas. Pourquoi ? Ouvrez Aide ▸ À propos et regardez la liste des capacités servies. Si la fonction n'y figure pas, ce n'est pas l'interface qui refuse : le moteur ne la sert pas pour ce document. Les messages de l'application le disent d'ailleurs explicitement.
Le code exporté se recompile-t-il tel quel ? Souvent : sur un banc de 149 projets, 121 se recompilent sans retouche. Les autres demandent d'ajouter une référence ou de traiter quelques marqueurs.
Les libellés de mon formulaire sont illisibles. C'est la page de codes. Un binaire VB6 ne déclare nulle part celle de ses textes de concepteur — réglez-la dans les Options (chapitre 11).
Pourquoi mes formulaires sont-ils plus lisibles que mes modules ? Parce que VB6 conserve les noms de contrôles et d'événements pour fonctionner, alors qu'il résout les procédures de modules en simples adresses. Voir le chapitre 5.
Mon exécutable est compressé (packer). Est-ce un problème ? Oui : il doit être décompressé au préalable, sans quoi les structures VB6 ne sont pas visibles dans le fichier.
Peut-on décompiler un .ocx ou une .dll ActiveX ?
Oui, et l'inventaire des membres publics y est en général plus riche, puisque COM impose de les
nommer.
Mon binaire est-il envoyé quelque part ? La lecture du format, les octets, le désassemblage et les ressources sont traités sur votre poste. La reconstruction du code s'exécute sur nos serveurs — c'est le sens de l'édition Desktop + Cloud.
Est-ce légal ? Cela dépend de votre juridiction et de vos droits sur le binaire. L'usage prévu est la récupération de votre propre code, ou d'un code sur lequel vous détenez les droits ou une autorisation.
Voir aussi
Manuel VBReFormer OnlineEssayer sans acheter