版本历史
从第一个 7 版到最新版。各条目描述您在屏幕上看到的内容:重建的代码、恢复的名称,以及导出后可在 Visual Basic 6 中重新打开的内容。
7.0.6
2026-09-19当前提供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.
If ComponentType() > 6 Then ElseIf ComponentType() = 0 Then Else End If GetFilename = (? & ?)
If ComponentType() = 0 Then
s = (FormName & ".frm")
ElseIf ComponentType() = 1 Then
s = (FormName & ".ctl")
' … all seven branchesMethod 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.
If Method = 0 Then
OHash.Insert key(i), rec(i)
ElseIf Method = 1 Then
' (nothing)
Else
' (nothing)
End IfIf 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 IfWrong 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.
If aExport Then ElseIf nom Like "*.ocx" Then Else End If s = "Type=Exe" & "Startup=" & …
If aExport = 0 Then
s = ("Type=Exe" & vbCrLf)
ElseIf nom Like "*.ocx" Then
s = ("Type=OleDll" & vbCrLf)
Else
s = ("Type=Control" & vbCrLf)
End IfReleasing 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.
Set node = (Me And 1) Set hash = eax Set p0 = arg_8
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.
chrono.Elapsed table.Find size, … r = table.Delete(key)
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.
tvItems.dispid_9 node.vtbl_64() node.vtbl_B4() list.vtbl_28(…) var.vtbl_38 -1
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
WithEventsvariables: 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-14Projects 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.
简而言之
- 修复 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.
- 修复 A large project exported zero files: a single character with no equivalent in the encoding was enough to fail the whole export.
- 改进 GoSub is recognised as a language construct, which finally lets old projects that use it reload in the IDE.
- 改进 Event signatures carry the real types of their parameters, read from the control's library, instead of Long by default.
- 改进 Variadic procedures (ParamArray) are recognised.
- 修复 Five functions were shown as procedures without a return value, while their callers used their result.
- 改进 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.
frmMessage.Show ' non-modalfrmMessage.Show vbModal
7.0.4
2026-09-13User-defined types, API buffers, faster opening
Tracking of user-defined types and API buffers, and much faster file opening.
简而言之
- 改进 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.
- 修复 The fields of a user-defined type passed by reference are followed, instead of keeping only its beginning.
- 修复 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.
- 修复 An If could open inside a loop and close after it, a structure the IDE rejects.
- 修复 Currency values and eight-byte arguments are read with the right width.
- 修复 A single read failure dropped the whole inventory of the project's libraries.
- 改进 When an export is refused, the application offers to buy the licence instead of showing an error code.
7.0.3
2026-09-09Signed installers, and what the application claims
A corrective release, centred on what the application claims and on the format map. Installers are now signed.
简而言之
- 安全 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.
- 修复 The format map is accessible; it already provided what another view kept waiting for.
- 修复 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-08Terms of use and handling of the submitted file
What happens to the files you submit, and what the terms of use say about it.
简而言之
- 安全 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.
- 修复 The terms of use were corrected: one clause about the file was inaccurate, and the essential point was missing.
- 修复 The graph refused to display with an error code instead of explaining what was missing.
7.0.1
2026-09-06First 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.
简而言之
- 修复 The installed package was unusable: the application did not start. A real start-up test is now part of building every version.
- 修复 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.
- 修复 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 generationGeneration 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.
简而言之
- 新增 The engine can run locally or remotely, chosen at launch.
- 修复 Library references are written in the exported project for every named type; without them, the IDE rejects the file.
- 修复 API declarations (Declare) are written through the native path, which was missing.
- 修复 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.
- 修复 Form resource files are written the way the IDE expects.
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.