Decompiler-VB.Net
FR
Connexion
VBReFormer Gen2 Moteur entièrement réécrit, P-code complet, et le studio en ligne en bêta publique. Lire l'annonce →
Historique

Historique des versions

De la première version 7 à la plus récente. Les entrées décrivent ce que vous voyez à l'écran : le code reconstruit, les noms retrouvés, ce que l'export permet de rouvrir dans Visual Basic 6.

7.0.6

2026-09-19Version en ligne

Ce que le code reconstruit vous montre de plus

Deux familles de corrections : du code qui manquait à l'écran, et, plus gênant, des valeurs affichées qui n'étaient pas les bonnes.

Du code qui manquait est revenu

Dans certaines procédures, des morceaux entiers ne s'affichaient pas. Rien ne le signalait : le code semblait simplement plus court que l'original.

Les branches d'un Select Case sortaient vides

Quand le compilateur transformait un Select Case en table de branchement, les sept branches apparaissaient vides et la valeur finale était perdue. Elles affichent maintenant leur contenu, chaînes de caractères comprises.

Avant
If ComponentType() > 6 Then
ElseIf ComponentType() = 0 Then
Else
End If

GetFilename = (? & ?)
7.0.6
If ComponentType() = 0 Then
    s = (FormName & ".frm")
ElseIf ComponentType() = 1 Then
    s = (FormName & ".ctl")
' … les sept branches

Des appels de méthode disparaissaient sans laisser de trace

Lorsqu'un objet était rangé dans une variable de module, l'appel qui suivait était parfois abandonné en silence : onze instructions retrouvées sur nos binaires de référence, dont des appels d'affichage de fenêtre.

Avant
If Method = 0 Then
    OHash.Insert key(i), rec(i)
ElseIf Method = 1 Then
    ' (rien)
Else
    ' (rien)
End If
7.0.6
If Method = 0 Then
    OHash.Insert key(i), rec(i)
ElseIf Method = 1 Then
    AHash.Insert key(i), rec(i)
Else
    Collect.Insert key(i), rec(i)
End If

Des valeurs fausses corrigées

Ce sont les corrections les plus importantes de cette version. Le code affiché se lisait bien et se recompilait, mais il ne faisait pas la même chose que l'original.

La valeur d'une seule branche était affichée pour toutes

Quand plusieurs branches d'un test donnaient des valeurs différentes à la même variable, le produit affichait parfois celle d'une seule branche, valable pour tous les chemins. Rien ne le signalait.

Avant
If aExport Then
ElseIf nom Like "*.ocx" Then
Else
End If

s = "Type=Exe" & "Startup=" & …
7.0.6
If aExport = 0 Then
    s = ("Type=Exe" & vbCrLf)
ElseIf nom Like "*.ocx" Then
    s = ("Type=OleDll" & vbCrLf)
Else
    s = ("Type=Control" & vbCrLf)
End If

Libérer une variable objet affichait une valeur inventée

Un simple Set X = Nothing pouvait ressortir avec une expression qui n'avait de sens dans aucun programme. Vingt-trois procédures de terminaison vérifiées : plus aucune.

Avant
Set node = (Me And 1)
Set hash = eax
Set p0   = arg_8
7.0.6
Set node = Nothing
Set hash = Nothing
Set p0   = Nothing

Des appels désignaient la mauvaise méthode

Dans une même classe, un appel pouvait porter le nom d'une autre méthode, un défaut invisible à la lecture puisque le nom affiché existe bel et bien. Le membre appelé est désormais identifié par sa position réelle plutôt que par son ordre de déclaration.

Avant
chrono.Elapsed
table.Find taille, …
r = table.Delete(clé)
7.0.6
chrono.Reset
table.Init taille, …
r = table.Find(clé)

Une méthode sans retour était affichée comme si elle en avait un

Collection.Add et Err.Raise ne renvoient rien. Leur résultat interne était pris pour une valeur et affecté à une variable : douze affectations fausses en moins.

Des noms à la place des numéros

Quand le produit ne parvient pas à identifier un membre, il affiche sa position dans la table des méthodes. Cette version en retrouve beaucoup plus.

Avant
tvItems.dispid_9
noeud.vtbl_64()
noeud.vtbl_B4()
liste.vtbl_28(…)
var.vtbl_38 -1
7.0.6
tvItems.Nodes
noeud.Key
noeud.Text
liste.Add(…)
var.Expanded = -1
  • Contrôles tiers : TreeView, ListView et leurs semblables. Leurs propriétés et méthodes portent leur nom, y compris pour les objets qu'elles renvoient.
  • Interfaces standard Windows : nommées au lieu d'être affichées sous forme d'identifiant.
  • Variables WithEvents privées : leur type est retrouvé, ce qui rend leurs gestionnaires d'événements lisibles.
  • Dans un UserControl : les contrôles posés dessus s'écrivent comme dans la source, sans préfixe indu.

Moins de valeurs indéterminées

Le marqueur ? signale une valeur que le produit n'a pas pu établir avec certitude. Nous préférons l'afficher plutôt que d'inventer, mais moins il y en a, mieux c'est. Sur nos binaires de référence, leur nombre a baissé d'environ un tiers depuis la version précédente. Les causes traitées : adresses de champs perdues au milieu d'une boucle, éléments de tableau calculés, arguments passés par registre, valeurs partagées entre plusieurs branches d'un test.

Projets exportés

  • Les variables de module sont déclarées. Sans leur ligne de déclaration, Visual Basic 6 lisait un accès de tableau comme l'appel d'une fonction inexistante et refusait le fichier entier.
  • Les tableaux locaux à taille fixe aussi, avec leurs bornes réelles lues dans le binaire.
  • Les procédures à nombre d'arguments variable sont reconnues comme telles.
  • Les paramètres relayés conservent leur nature de tableau à travers plusieurs niveaux d'appel.
  • Une interface au nom masqué n'est plus écrite telle quelle : VB6 refuse tout identifiant commençant par un souligné.

Mise à jour

Installez le nouveau paquet par-dessus l'ancien : c'est une mise à niveau, pas une seconde installation. Vos réglages sont conservés. Trois langues sont disponibles : français, anglais, espagnol.

7.0.5

2026-09-14

Les projets qui ne se rouvraient pas dans l'IDE

Une version tournée vers les projets exportés que Visual Basic 6 refusait de rouvrir, et une correction de comportement qui ne se voyait pas à la lecture.

En bref

  • Corrigé Cinq Show vbModal étaient rendus non modaux. Le fichier se lisait bien et se recompilait ; il n'ouvrait simplement pas les fenêtres de la même façon que l'original. Le plus sérieux des défauts corrigés dans cette série.
  • Corrigé Un gros projet sortait à zéro fichier : un seul caractère sans équivalent dans l'encodage suffisait à faire échouer l'export entier.
  • Amélioré GoSub est reconnu comme une construction du langage, ce qui permet enfin de recharger dans l'IDE les projets anciens qui l'emploient.
  • Amélioré Les signatures d'événements portent les vrais types de leurs paramètres, lus dans la bibliothèque du contrôle, au lieu de Long par défaut.
  • Amélioré Les procédures à nombre d'arguments variable (ParamArray) sont reconnues.
  • Corrigé Cinq fonctions étaient affichées comme des procédures sans retour, alors que leurs appelants utilisaient leur résultat.
  • Amélioré L'application identifie le poste qui utilise la licence par une empreinte à sens unique, jamais le numéro de série, le nom de l'ordinateur ni l'adresse IP ; si la licence est déjà active sur un autre poste, elle propose de la transférer.
Avant
frmMessage.Show        ' non modal
7.0.5
frmMessage.Show vbModal

7.0.4

2026-09-13

Types définis par l'utilisateur, tampons d'API, ouverture plus rapide

Le suivi des types définis par l'utilisateur et des tampons d'API, et une ouverture de fichier beaucoup plus rapide.

En bref

  • Amélioré L'ouverture d'un binaire est nettement plus rapide : le lecteur de format picorait le fichier par petits morceaux, près de 78 000 lectures de 213 octets pour un seul fichier.
  • Corrigé Les champs d'un type défini par l'utilisateur passé par adresse sont suivis, au lieu de n'en garder que le début.
  • Corrigé Le tampon d'un appel d'API était relu comme une nouvelle allocation, ce qui produisait des répétitions et, dans un cas, une boucle sans fin dans le code affiché.
  • Corrigé Un If pouvait s'ouvrir dans une boucle et se refermer après elle, structure que l'IDE refuse.
  • Corrigé Les valeurs Currency et les arguments de huit octets sont lus avec la bonne largeur.
  • Corrigé Un échec isolé de lecture faisait sauter tout l'inventaire des bibliothèques du projet.
  • Amélioré Au refus d'export, l'application propose d'acheter la licence au lieu d'afficher un code d'erreur.

7.0.3

2026-09-09

Installateurs signés, et ce que l'application annonce

Version de correction, centrée sur ce que l'application annonce et sur la carte du format. Les installateurs sont désormais signés.

En bref

  • Sécurité Les installateurs sont signés au nom de Yneos et horodatés. Windows affiche l'éditeur vérifié au lieu de « Éditeur inconnu », et toute modification du fichier après coup invalide la signature.
  • Corrigé La carte du format est accessible ; elle donnait déjà ce qu'une autre vue faisait attendre.
  • Corrigé La fenêtre « À propos » annonçait six composants qui ne sont pas dans le paquet installé. Elle ne mentionne plus que ce qui est réellement livré.

7.0.2

2026-09-08

Conditions d'utilisation et traitement du fichier envoyé

Ce que deviennent les fichiers que vous envoyez, et ce que les conditions d'utilisation en disent.

En bref

  • Sécurité Le binaire que vous soumettez est effacé de façon garantie, y compris si le traitement s'interrompt. Les conditions d'utilisation le promettaient ; le processus pouvait s'arrêter avant.
  • Corrigé Les conditions d'utilisation ont été corrigées : une clause sur le fichier était inexacte, et l'essentiel n'y figurait pas.
  • Corrigé Le graphe refusait de s'afficher avec un code d'erreur au lieu d'expliquer ce qui manquait.

7.0.1

2026-09-06

Première correction après la mise en ligne

Le paquet installé de la 7.0.0 ne fonctionnait pas. Cette version le remplace, et corrige ce que l'offre gratuite annonçait.

En bref

  • Corrigé Le paquet installé était inutilisable : l'application ne démarrait pas. Un essai de démarrage réel fait désormais partie de la fabrication de chaque version.
  • Corrigé L'aperçu gratuit annonçait 20 % du code et en livrait entre 25 et 83 % selon les fichiers. La proportion annoncée est maintenant celle qui est appliquée.
  • Corrigé Le titre de la fenêtre indiquait « Pro » alors que l'offre gratuite était servie. Il indique désormais le palier réel, et refuse de nommer celui qu'il ne peut pas établir.

7.0.0

2026-09-05nouvelle génération

La génération 7 : une application de bureau reconstruite, un moteur neuf

VBReFormer change de génération. Le moteur de décompilation est entièrement nouveau, écrit de zéro et non dérivé de celui des versions 6, et l'application de bureau a été reconstruite autour de lui.

En bref

  • Nouveau Le moteur peut tourner en local ou à distance, au choix au lancement.
  • Corrigé Les références de bibliothèques sont écrites dans le projet exporté pour chaque type nommé ; sans elles, l'IDE refuse le fichier.
  • Corrigé Les déclarations d'API (Declare) sont écrites par le chemin natif, ce qui manquait.
  • Corrigé La signature d'une procédure et son corps pouvaient se contredire dans le même fichier, et Visual Basic 6 refusait celui des deux qui avait raison.
  • Corrigé Les fichiers de ressources des formulaires sont écrits conformément à ce que l'IDE attend.
À lire

Ce qui change entre l'ancienne version et la 7

Un article compare les deux générations sur les mêmes binaires : ce que chacune reconstruit, et ce qu'elle ne reconstruit pas.