Decompiler-VB.Net
PL
Zaloguj się
VBReFormer Gen2 Silnik napisany od nowa, pełna obsługa P-code i studio online w publicznej wersji beta. Przeczytaj zapowiedź →
Nowości

Historia wersji

Od pierwszej wersji 7 do najnowszej. Wpisy opisują to, co widać na ekranie: odtworzony kod, odzyskane nazwy i to, co eksport pozwala ponownie otworzyć w Visual Basic 6.

7.0.6

2026-09-19Wersja udostępniana

What the reconstructed code now shows you

Two families of fixes: code that was missing on screen, and, more troubling, displayed values that were not the right ones.

Missing code is back

In some procedures, whole pieces did not show. Nothing flagged it: the code simply looked shorter than the original.

The branches of a Select Case came out empty

When the compiler turned a Select Case into a jump table, all seven branches appeared empty and the final value was lost. They now show their content, string literals included.

Przed
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")
' … all seven branches

Method calls disappeared without a trace

When an object was stored in a module-level variable, the call that followed was sometimes silently dropped: eleven statements recovered on our reference binaries, including window display calls.

Przed
If Method = 0 Then
    OHash.Insert key(i), rec(i)
ElseIf Method = 1 Then
    ' (nothing)
Else
    ' (nothing)
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

Wrong values corrected

These are the most important fixes in this version. The displayed code read well and recompiled, but it did not do the same thing as the original.

The value of a single branch was shown for all of them

When several branches of a test assigned different values to the same variable, the product sometimes showed the value of a single branch, as if valid for every path. Nothing flagged it.

Przed
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

Releasing an object variable showed an invented value

A plain Set X = Nothing could come out as an expression that made sense in no program. Twenty-three termination procedures checked: none left.

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

Some calls named the wrong method

Within a class, a call could carry the name of another method, a defect invisible when reading since the displayed name does exist. The called member is now identified by its real position rather than its declaration order.

Przed
chrono.Elapsed
table.Find size, …
r = table.Delete(key)
7.0.6
chrono.Reset
table.Init size, …
r = table.Find(key)

A method with no return value was shown as if it had one

Collection.Add and Err.Raise return nothing. Their internal result was taken for a value and assigned to a variable: twelve false assignments fewer.

Names instead of numbers

When the product cannot identify a member, it shows its position in the method table. This version recovers many more.

Przed
tvItems.dispid_9
node.vtbl_64()
node.vtbl_B4()
list.vtbl_28(…)
var.vtbl_38 -1
7.0.6
tvItems.Nodes
node.Key
node.Text
list.Add(…)
var.Expanded = -1
  • Third-party controls: TreeView, ListView and the like. Their properties and methods carry their names, including for the objects they return.
  • Standard Windows interfaces: named instead of shown as an identifier.
  • Private WithEvents variables: their type is recovered, which makes their event handlers readable.
  • On a UserControl: the controls placed on it are written as in the source, without a spurious prefix.

Fewer undetermined values

The ? marker flags a value the product could not establish with certainty. We would rather show it than invent one, but the fewer there are, the better. On our reference binaries, their number dropped by about a third since the previous version. Causes addressed: field addresses lost in the middle of a loop, computed array elements, register-passed arguments, values shared between several branches of a test.

Exported projects

  • Module variables are declared. Without their declaration line, Visual Basic 6 read an array access as a call to a non-existent function and rejected the whole file.
  • Fixed-size local arrays too, with their real bounds read from the binary.
  • Variadic procedures are recognised as such.
  • Relayed parameters keep their array nature across several call levels.
  • An interface with a masked name is no longer written as is: VB6 rejects any identifier starting with an underscore.

Updating

Install the new package over the previous one: it is an upgrade, not a second installation. Your settings are kept. Three languages are available: French, English, Spanish.

7.0.5

2026-09-14

Projects that would not reopen in the IDE

A version focused on exported projects that Visual Basic 6 refused to reopen, and a behaviour fix that could not be seen when reading.

W skrócie

  • Poprawione Five Show vbModal were rendered non-modal. The file read well and recompiled; it simply did not open windows the way the original did. The most serious defect fixed in this series.
  • Poprawione A large project exported zero files: a single character with no equivalent in the encoding was enough to fail the whole export.
  • Ulepszone GoSub is recognised as a language construct, which finally lets old projects that use it reload in the IDE.
  • Ulepszone Event signatures carry the real types of their parameters, read from the control's library, instead of Long by default.
  • Ulepszone Variadic procedures (ParamArray) are recognised.
  • Poprawione Five functions were shown as procedures without a return value, while their callers used their result.
  • Ulepszone The application identifies the workstation using the licence by a one-way fingerprint, never the serial number, computer name or IP address; if the licence is already active on another workstation, it offers to transfer it.
Przed
frmMessage.Show        ' non-modal
7.0.5
frmMessage.Show vbModal

7.0.4

2026-09-13

User-defined types, API buffers, faster opening

Tracking of user-defined types and API buffers, and much faster file opening.

W skrócie

  • Ulepszone Opening a binary is markedly faster: the format reader pecked at the file in small pieces, nearly 78,000 reads of 213 bytes for a single file.
  • Poprawione The fields of a user-defined type passed by reference are followed, instead of keeping only its beginning.
  • Poprawione The buffer of an API call was re-read as a new allocation, producing repetitions and, in one case, an endless loop in the displayed code.
  • Poprawione An If could open inside a loop and close after it, a structure the IDE rejects.
  • Poprawione Currency values and eight-byte arguments are read with the right width.
  • Poprawione A single read failure dropped the whole inventory of the project's libraries.
  • Ulepszone When an export is refused, the application offers to buy the licence instead of showing an error code.

7.0.3

2026-09-09

Signed installers, and what the application claims

A corrective release, centred on what the application claims and on the format map. Installers are now signed.

W skrócie

  • Bezpieczeństwo Installers are signed in Yneos's name and timestamped. Windows shows the verified publisher instead of “Unknown publisher”, and any later modification of the file invalidates the signature.
  • Poprawione The format map is accessible; it already provided what another view kept waiting for.
  • Poprawione The About window listed six components that are not in the installed package. It now mentions only what is actually shipped.

7.0.2

2026-09-08

Terms of use and handling of the submitted file

What happens to the files you submit, and what the terms of use say about it.

W skrócie

  • Bezpieczeństwo The binary you submit is erased with a guarantee, even if processing is interrupted. The terms of use promised it; the process could stop before.
  • Poprawione The terms of use were corrected: one clause about the file was inaccurate, and the essential point was missing.
  • Poprawione The graph refused to display with an error code instead of explaining what was missing.

7.0.1

2026-09-06

First fix after going live

The installed package of 7.0.0 did not work. This version replaces it, and corrects what the free tier announced.

W skrócie

  • Poprawione The installed package was unusable: the application did not start. A real start-up test is now part of building every version.
  • Poprawione The free preview announced 20% of the code and delivered between 25 and 83% depending on the file. The announced proportion is now the one applied.
  • Poprawione The window title said “Pro” while the free tier was served. It now shows the real tier, and refuses to name one it cannot establish.

7.0.0

2026-09-05new generation

Generation 7: a rebuilt desktop application, a new engine

VBReFormer changes generation. The decompilation engine is entirely new, written from scratch rather than derived from the version 6 engine, and the desktop application was rebuilt around it.

W skrócie

  • Nowe The engine can run locally or remotely, chosen at launch.
  • Poprawione Library references are written in the exported project for every named type; without them, the IDE rejects the file.
  • Poprawione API declarations (Declare) are written through the native path, which was missing.
  • Poprawione A procedure's signature and its body could contradict each other in the same file, and Visual Basic 6 rejected whichever of the two was right.
  • Poprawione Form resource files are written the way the IDE expects.
Read next

What changes between the previous version and 7

An article compares the two generations on the same binaries: what each one reconstructs, and what it does not.