Decompiler-VB.Net
VN
Đăng nhập
VBReFormer Gen2 Engine được viết lại từ đầu, hỗ trợ P-code đầy đủ, và studio trực tuyến đang ở giai đoạn beta công khai. Đọc thông báo →
Ghi chú phát hành

Lịch sử phiên bản

Từ phiên bản 7 đầu tiên đến phiên bản mới nhất. Các mục mô tả những gì bạn thấy trên màn hình: mã được tái tạo, các tên được khôi phục, những gì bản xuất cho phép bạn mở lại trong Visual Basic 6.

7.0.7

2026-10-02Đang được cung cấp

Missing libraries: see them, and supply them

When a program uses components the engine does not know, VBReFormer says so as soon as the file opens and lets you supply the files. The reconstructed code also improves on parameters, arrays, files and late binding.

Tóm tắt

  • Mới A banner under the menu announces, as soon as the file opens, how many libraries and interfaces are missing, with their list (GUID and name). Before, those calls came out as vtable offsets, with no explanation.
  • Mới The “Supply files…” button accepts one or more .ocx, .dll, .tlb, .olb or .exe files, with the local engine as with the remote one; the binary is reopened at once with the new names. Only the type description is read: the component is never run.
  • Cải tiến The controls shipped with Visual Basic 6 are recognised out of the box: MSFlexGrid, MSDBGrid, Hierarchical FlexGrid, DataGrid, MSChart, SSTab, RichTextBox, MaskEdBox, MSComm, Common Controls 2, ADO Data Control, Forms 2.0, as well as the old Sheridan 3D, Outline, Crystal Reports 4.6 and Windows 2000 Imaging controls.
  • Đã sửa Calls that could be resolved came out as vtable offsets: on a customer's program, more than 140,000 calls get their name back.
  • Đã sửa The VB and VBA libraries themselves were reported missing on a server without Visual Basic 6 installed.
  • Mới The Put # statement is reconstructed; it was missing entirely. Print on an object is no longer confused with Print # to a file.
  • Cải tiến Parameters: a ByRef parameter is no longer inferred from the mere fact that the procedure writes it; its type comes from the function that reads it or the library that declares it. ByRef … As Currency, object parameters and As String parameters better recognised.
  • Cải tiến Late binding: correct argument count, indexed properties kept on write, member names read from the type library, accented names correctly decoded.
  • Đã sửa MsgBox no longer loses its arguments, InStr on a Variant is reconstructed, CreateObject no longer carries an invented argument, “= False” is no longer lost where “= True” came out right.
  • Cải tiến Fewer “?” markers (unproven values) in the output, without ever replacing a “?” with a plausible but wrong value.
  • Mới The binary's resources (icons, images, strings) are listed and served; a link to the documentation in the Help menu; the object browser translated into French and Spanish.
  • Bảo mật Binaries and installers signed and timestamped; application obfuscated. The package contains no part of the decompiler: decompilation is still served by our servers.

Missing libraries: see them, and supply them

A VB6 program often relies on third-party components. When the engine does not know them, their calls came out as vtable offsets, with no explanation. This version names them, counts them, and lets you supply the files.

A banner as soon as the file opens

Under the menu, the number of missing libraries and interfaces, with their list (GUID and name). The detailed list is also in the object browser.

“Supply files…”

The button accepts one or more .ocx, .dll, .tlb, .olb or .exe files, with the local engine as with the remote one; the binary is reopened at once with the new names. Only the type description is read: the component is never run.

The Visual Basic 6 controls, recognised out of the box

  • MSFlexGrid, MSDBGrid, Hierarchical FlexGrid, DataGrid, MSChart, SSTab, RichTextBox, MaskEdBox, MSComm, Common Controls 2, ADO Data Control, Forms 2.0.
  • The old Sheridan 3D, Outline, Crystal Reports 4.6 and Windows 2000 Imaging (scanning) controls.
  • The VB and VBA libraries themselves are no longer reported missing on a server without Visual Basic 6 installed.
  • Calls that could be resolved came out as vtable offsets: on a customer's program, more than 140,000 calls get their name back.

More accurate reconstructed code

These improvements are made server-side: they also benefit previous versions connected to the remote engine.

Parameters

A ByRef parameter is no longer inferred from the mere fact that the procedure writes it, since VB6 allows writing a ByVal parameter; its type comes from the function that reads it or the library that declares it. ByRef … As Currency, object parameters and As String parameters better recognised.

Arrays

Indexed accesses keep their array in more cases: constant offset, index passed through a temporary variable, fixed-size arrays in a local user-defined type.

Files

The Put # statement is reconstructed; it was missing entirely. Print on an object is no longer confused with Print # to a file.

Late binding

Correct argument count, indexed properties kept on write, member names read from the type library, accented names correctly decoded (they came out as ideograms).

Functions, return values, control flow

  • MsgBox no longer loses its arguments; InStr on a Variant is reconstructed; CreateObject no longer carries an invented argument; “= False” is no longer lost where “= True” came out right.
  • Complete structure returns; spurious returns and duplicated lines removed; Variants better tracked from one call to the next.
  • Labels targeted by a jump always exist; correct stack level at branches; procedures without an ebp frame read better.
  • Fewer “?” markers (unproven values) in the output, without ever replacing a “?” with a plausible but wrong value.

Interface and documentation

  • A link to the documentation in the Help menu.
  • The object browser is translated into French and Spanish.
  • The notes added to an exported project are written in the interface language.
  • The binary's resources (icons, images, strings) are listed and served.
  • Optional sharing of library descriptions with the server: the question is only asked if the server keeps a shared catalogue; a refusal is never asked again, and the choice can be withdrawn in the preferences. The shared catalogue is not active yet: nothing is sent in this version.

Security and delivery

  • The package contains no part of the decompiler: decompilation is still served by our servers.
  • Binaries and installers signed and timestamped; application obfuscated.

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.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.

Trước đó
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.

Trước đó
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.

Trước đó
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.

Trước đó
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.

Trước đó
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.

Trước đó
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.

Tóm tắt

  • Đã sửa 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.
  • Đã sửa A large project exported zero files: a single character with no equivalent in the encoding was enough to fail the whole export.
  • Cải tiến GoSub is recognised as a language construct, which finally lets old projects that use it reload in the IDE.
  • Cải tiến Event signatures carry the real types of their parameters, read from the control's library, instead of Long by default.
  • Cải tiến Variadic procedures (ParamArray) are recognised.
  • Đã sửa Five functions were shown as procedures without a return value, while their callers used their result.
  • Cải tiến 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.
Trước đó
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.

Tóm tắt

  • Cải tiến 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.
  • Đã sửa The fields of a user-defined type passed by reference are followed, instead of keeping only its beginning.
  • Đã sửa 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.
  • Đã sửa An If could open inside a loop and close after it, a structure the IDE rejects.
  • Đã sửa Currency values and eight-byte arguments are read with the right width.
  • Đã sửa A single read failure dropped the whole inventory of the project's libraries.
  • Cải tiến 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.

Tóm tắt

  • Bảo mật 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.
  • Đã sửa The format map is accessible; it already provided what another view kept waiting for.
  • Đã sửa 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.

Tóm tắt

  • Bảo mật 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.
  • Đã sửa The terms of use were corrected: one clause about the file was inaccurate, and the essential point was missing.
  • Đã sửa 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.

Tóm tắt

  • Đã sửa The installed package was unusable: the application did not start. A real start-up test is now part of building every version.
  • Đã sửa 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.
  • Đã sửa 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.

Tóm tắt

  • Mới The engine can run locally or remotely, chosen at launch.
  • Đã sửa Library references are written in the exported project for every named type; without them, the IDE rejects the file.
  • Đã sửa API declarations (Declare) are written through the native path, which was missing.
  • Đã sửa 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.
  • Đã sửa 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.