VBReFormer Online Manual
VBReFormer Online user manual: drop a VB6 executable in your browser, explore its reconstructed code, download a project you can reload in the IDE.
Updated on 9/20/202611 chapters
The studio in your browser. You drop a Visual Basic 5 or 6 executable, you explore its reconstructed code, and you leave with an archive the VB6 IDE reopens. Nothing to install, on any system — including macOS, Linux and the Windows versions too old for the desktop application.
1. Opening the studio
There is nothing to install, nothing to configure and no account to create to get started: open the studio's address in a recent browser, and you are there.
- Any system — the studio depends only on the browser. It is the only way to use VBReFormer from a Mac, a Linux machine, or a Windows older than 10.
- Eleven languages — the web studio is served in eleven languages, nearly four times as many as the desktop application. The selector is in the header.
- Light or dark theme — the studio follows your system setting, and you can override it.
Français · English · Español · Deutsch · Italiano · Português · 日本語 · 简体中文 · Українська · हिन्दी · العربية
2. Dropping a binary
- Tick the declaration. The studio asks you to declare that you own the program, or that you are entitled to analyse its code. It is a condition of use, not a formality.
- Drop the file. Drag it into the drop zone, or browse your files. Accepted formats:
.exe,.dll,.ocx. Maximum size: 64 MB — the limit is shown on screen rather than discovered after a failed upload. - Let the analysis run. The studio names each stage as it goes, with a counter: Receiving the file → Analysing the binary → Decompiling → Inventorying symbols → Call graph → Control flow.
The time depends on the size and nature of the binary. For reference, a 9.35 MB executable goes from opening to written project in about twelve seconds.
Once the analysis is done, the studio also tells you what kind of binary it found: native code, P-code, or undetermined kind.
3. What happens to your file
The file is analysed, then erased with your session. Nothing is kept.
That is written on the drop page, and it is how the service actually behaves: your binary is processed for the length of your working session, and disappears with it. It is not archived, not indexed, not reused.
What this also implies. Your work does not survive the session either. If you close the tab or the session expires, you have to drop the binary again. Download your archive before you leave. A restart of the service also disconnects live sessions — no risk to your original file, which is on your own machine, but you will lose the exploration in progress.
If the confidentiality of your binary is a contractual matter, note that the Desktop edition handles locally everything that amounts to reading the file — format, bytes, disassembly, resources — and sends to the service only what amounts to reconstruction.
4. Four ways into a binary
The left-hand panel offers four entry points, and they answer four different questions.
| tab | the question it answers |
|---|---|
| Project | "How is this program organised?" — the tree of forms, classes, modules and their procedures, as VB6 saw it. |
| Symbols | "Where is this defined?" — the full inventory, with the kind and container of every symbol. It tells names read from the binary apart from names it had to synthesise, which tells you straight away what you can rely on. |
| Search | "Where does this text appear?" — in the reconstructed code as well as in designer sections. |
| Resources | "What is in there besides code?" — icons, cursors, bitmaps, string tables, version information, with their kind, their size and their contents. Served without a licence: a resource is read, not reconstructed. |
In the tree, every member carries the visibility the binary declares — Public, Private, Friend.
A member whose visibility could not be read carries no marking at all: we do not write down what we
do not know.
Renaming
The web studio lets you rename symbols, and renaming is global: call sites in other modules follow. This is the central gesture when working on a binary — the decompiler gives you back the logic, you give it back the names.
5. The views
Seven views, and the studio itself states, under each one, what it shows and whether it requires a licence.
| view | what it shows | licence |
|---|---|---|
| Source | the reconstructed VB6 code | preview without a licence |
| IR | what the decompiler sees before it rebuilds the control flow | preview without a licence |
| Assembly | x86 machine code, symbols resolved | served in full |
| P-code | VB6 virtual-machine opcodes | served in full |
| Designer | the form's designer section | served in full |
| Project | the reconstructed .vbp |
served in full |
| Structure | the format structures as they were read | served in full |
The dividing line. What is read from your file is free; what is reconstructed is sold. The disassembly, the structure, the designer section and the
.vbpare taken from tables present in your own executable. The VB6 source exists nowhere — it has to be rebuilt, and that work is the product.
Below the code, the studio also shows what the decompiler reports for the current procedure: the diagnostics, that is, what it could not do and why. That is the reflex to have whenever a result surprises you.
6. What compilation keeps, and what it throws away
This chapter explains why your forms come out very readable and your .bas modules come out with
technical names. The rule is simple:
Whatever Visual Basic needs at run time, it wrote into the file: VBReFormer finds it again. Whatever it no longer needed after compiling, it threw away — and nobody can bring that back.
What survives: names of forms, classes and modules · names of controls · event handlers · public members of classes · interface properties · calls into the VB runtime (635 functions) · Win32 API (15,680 signatures) · the structure of the code · the strings.
What is not in the file: comments · names of local variables · names of parameters · named
constants, replaced by their value · names of procedures in .bas modules · the original
indentation.
A verifiable example
The extract below comes from SETUP1.EXE, the setup wizard shipped with Visual Basic 6 — for which Microsoft distributes the source code. Anyone who owns VB6 can therefore redo this comparison.
Original source, 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
As rendered by 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
The logic is identical, line for line. Right, Trim, Len and RTrim$ are named; the ByRef
passing is correctly inferred. What is lost is the name of the procedure and of its parameter, and
the named constants appear as their value — the compiler replaced them, not VBReFormer.
Reading the markers
VBReFormer never guesses: a value that cannot be established is marked rather than invented.
| marker | meaning | what to do |
|---|---|---|
proc_42C506 |
a procedure designated by its address | rename it — the name propagates |
var_18, arg_8 |
a local variable or a parameter | read how it is used, then rename |
? |
value not established | look at the Assembly view at the same place |
A file containing a
?will be rejected by the VB6 IDE. The marker is there for you to decide, not to be recompiled as is. A plausible, wrong value is the worst thing a decompiler can produce.
7. The graphs
Two graphs, and they do not tell the same story.
- Calls — who calls what: the architecture of the program. Filters for Callers, Callees or Both, and an option to hide isolated nodes.
- Flow — where execution goes: the blocks, the entry, loop headers, loop back-edges, and the blocks marked UNREACHABLE.
Five ways to read a block
Select a block in the graph, then choose what you want to see inside it: Shape, IR, VB6, Assembly or P-code. Same piece of program, five levels of reading.
Honesty in the rendering. The studio states how many blocks are anchored on listing lines, and how many have no proven address — their instructions then fall into the preceding slice. So you know which part of the slicing is certain.
The graphs require a licence: who calls what and where execution goes is the architecture of the program. The disassembly and the structure stay open without one.
8. The preview and the licence
Without a licence, the Source view is not refused to you: it is shown partly masked. You see the structure, the names that were recovered and the real quality of the reconstruction — on your own binary — before paying anything.
That is deliberate: a visitor who sees nothing cannot judge. And if a subscription lapses, you see what you would get back rather than a closed door.
One workstation at a time
A VBReFormer licence opens one workstation at a time — and a browser counts as one workstation. If yours is working elsewhere, the studio offers to transfer it here from your account, or to add a seat. It is a soft refusal: you have paid, nothing is missing.
9. Downloading your sources
The delivery panel produces a .zip archive containing the .vbp and its files — .bas, .cls,
.frm — written in ANSI, as the IDE expects them. The panel states the number of files and the
size before you download.
Read the notes before opening the project
The studio shows what could not be reconstructed, with a why for each entry. Some information — external references, the compilation options, the start-up mode — is in no structure of the binary: it was not erased, it was never there. So it is reported rather than invented.
In the IDE, if a reference is missing, add it through Project ▸ References. Any ? markers are for
you to handle by hand.
The panel then offers to analyse another binary: the session starts over, and the previous file is erased.
10. Online or Desktop?
Both editions share the same engine and produce the same code. They do not serve the same purpose.
| Online | Desktop | |
|---|---|---|
| Installation | none | MSI, Windows 10+ |
| Systems | all | Windows 10 and 11 |
| Interface languages | 11 | 3 |
| Tree, symbols, search, renaming | ✔ | ✔ |
| The seven views | ✔ | ✔ |
| Call and flow graphs | ✔ | ✔ |
| Project export | ✔ (zip) | ✔ (folder) |
| Resources: inventory and contents | ✔ | ✔ |
| Resources: extraction to a file | ✘ | ✔ |
| Annotated hex view | ✘ | ✔ |
| Painted designer, image export | ✘ (text section only) | ✔ |
| Binary patching | ✘ | ✔ |
| Cross-references | ✘ | ✔ |
| Object browser, Win32 API browser | ✘ | ✔ |
| Bookmarks, rendering options | ✘ | ✔ |
| Work survives the session | ✘ | ✔ |
| Billing | credits | subscription |
In short — Online to open a binary, understand what it does and leave with the sources. Desktop to work on a binary for a long time: bytes, resources, cross-references, patches, and work that does not vanish when you close the tab.
11. Frequently asked questions
Is my binary kept? No. It is analysed, then erased with your session. See chapter 3.
My file is larger than 64 MB. That is the studio's limit, stated before you drop the file. For a larger binary, the Desktop edition has no such upload constraint.
Where are the binary's resources? In the Resources tab on the left — without a licence. You see every entry with its kind and size, and its contents when you open it: images are painted, text is displayed, and anything else is shown as bytes rather than hidden. Extraction to a file is specific to the Desktop edition, as is the hex view.
Why does the code stop in the middle of a procedure? That is the preview: without a licence the free edition shows the structure, the names and the full disassembly, but the reconstructed body requires a licence.
I closed the tab and lost everything. Work does not survive the session. Download the archive before you leave; the binary itself is still on your machine.
Does the exported code recompile as is? Often: across a bench of 149 projects, 121 recompile with no edits. The rest need a missing reference added or a few markers handled.
My executable is packed. It has to be unpacked first, otherwise the VB6 structures are not visible in the file.
Is this legal? That depends on your jurisdiction and on your rights over the binary — which is what the declaration at drop time is about. The intended use is recovering your own code, or code you hold the rights to or are authorised to analyse.
See also
VBReFormer Desktop ManualTry without buying