Decompiler-VB.Net
IT
Accedi
VBReFormer Gen2 Motore riscritto da zero, P-code completo e lo studio online in beta pubblica. Leggi l'annuncio
Documentazione
VBReFormer Online

Manuale di VBReFormer Online

Manuale d'uso di VBReFormer Online: rilasciare un eseguibile VB6 nel browser, esplorare il suo codice ricostruito, scaricare un progetto ricaricabile nell'IDE.

Aggiornato il 20/09/202611 capitoli

Lo studio nel vostro browser. Rilasciate un eseguibile Visual Basic 5 o 6, esplorate il suo codice ricostruito e ve ne andate con un archivio che l'IDE VB6 riapre. Niente da installare, su qualsiasi sistema — compresi macOS, Linux e le versioni di Windows troppo vecchie per l'applicazione desktop.

1. Aprire lo studio

Non c'è nulla da installare, nulla da configurare e nessun account da creare per cominciare: aprite l'indirizzo dello studio in un browser recente, e ci siete.

  • Qualsiasi sistema — lo studio dipende solo dal browser. È l'unico modo di usare VBReFormer da un Mac, da una macchina Linux o da un Windows precedente a 10.
  • Undici lingue — lo studio web è servito in undici lingue, quasi quattro volte più dell'applicazione desktop. Il selettore è nell'intestazione.
  • Tema chiaro o scuro — lo studio segue l'impostazione del vostro sistema, e potete forzarla (Chiaro / Scuro).

Français · English · Español · Deutsch · Italiano · Português · 日本語 · 简体中文 · Українська · हिन्दी · العربية

2. Rilasciare un binario

  1. Spuntate la dichiarazione. Lo studio vi chiede di dichiarare che siete proprietari del programma, o che avete il diritto di analizzarne il codice. È una condizione d'uso, non una formalità.
  2. Rilasciate il file. Trascinatelo nella zona prevista, oppure sfogliate i vostri file. Formati accettati: .exe, .dll, .ocx. Dimensione massima: 64 MB — il limite è mostrato sullo schermo invece di essere scoperto dopo un caricamento fallito.
  3. Lasciate che l'analisi si svolga. Lo studio annuncia ogni tappa con il suo nome, con un contatore: Ricezione del file → Analisi del binario → Decompilazione → Inventario dei simboli → Grafo delle chiamate → Flusso di controllo.

La durata dipende dalla dimensione e dalla natura del binario. Come riferimento, un eseguibile di 9,35 MB passa dall'apertura al progetto scritto in una dozzina di secondi.

Terminata l'analisi, lo studio vi dice anche la natura di ciò che ha trovato: codice nativo, P-code, o natura indeterminata.

3. Che cosa succede al vostro file

Il file viene analizzato, poi cancellato con la vostra sessione. Nulla viene conservato.

È scritto sulla pagina di rilascio, ed è il funzionamento reale: il vostro binario è elaborato per la durata della vostra sessione di lavoro, e scompare con essa. Non viene archiviato, non indicizzato, non riutilizzato.

Ciò che questo implica anche. Il vostro lavoro non sopravvive alla sessione. Se chiudete la scheda o se la sessione scade, bisogna rilasciare di nuovo il binario. Scaricate il vostro archivio prima di andarvene. Anche un riavvio del servizio disconnette le sessioni in corso — senza rischio per il vostro file originale, che è sulla vostra macchina, ma perderete l'esplorazione in corso.

Se la riservatezza del vostro binario è una questione contrattuale, sappiate che l'edizione Desktop elabora localmente tutto ciò che riguarda la lettura del file — formato, byte, disassemblato, risorse — e invia al servizio solo ciò che riguarda la ricostruzione.

4. Quattro modi per entrare in un binario

Il pannello di sinistra offre quattro ingressi, e rispondono a quattro domande diverse.

scheda la domanda a cui risponde
Progetto «Com'è organizzato questo programma?» — l'albero dei form, delle classi, dei moduli e delle loro procedure, così come lo vedeva VB6.
Simboli «Dov'è definito questo?» — l'inventario completo, con la natura e il contenitore di ogni simbolo. Distingue i nomi letti dai nomi sintetizzati, il che vi dice subito di che cosa potete fidarvi.
Ricerca «Dove compare questo testo?» — nel codice ricostruito come nelle sezioni del designer.
Risorse «Che cos'altro c'è oltre al codice?» — icone, cursori, bitmap, tabelle di stringhe, informazioni di versione, con il loro tipo, la loro dimensione e il loro contenuto. Servita senza licenza: una risorsa si legge, non si ricostruisce.

Nell'albero, ogni membro porta la sua visibilità così come il binario la dichiara — (Public), (Private), (Friend). Un membro la cui visibilità non è stata letta non porta alcun segno: non si scrive ciò che non si sa.

Rinominare

Lo studio web permette di rinominare i simboli, e la rinomina è globale: i punti di chiamata degli altri moduli seguono. È il gesto centrale del lavoro su un binario — il decompilatore vi restituisce la logica, voi gli restituite i nomi.

5. Le viste

Sette viste, e lo studio stesso dice, sotto ciascuna, che cosa mostra e se richiede una licenza.

vista che cosa mostra licenza
Sorgente il codice VB6 ricostruito anteprima senza licenza
IR ciò che il decompilatore vede prima di ricostruire il flusso anteprima senza licenza
Assembly codice macchina x86, simboli risolti servita per intero
P-code opcode della macchina virtuale VB6 servita per intero
Designer la sezione designer del form servita per intero
Progetto il .vbp ricostruito servita per intero
Struttura le strutture del formato così come sono state lette servita per intero

La linea che separa. Ciò che si legge nel vostro file è gratuito; ciò che si ricostruisce è a pagamento. Il disassemblato, la struttura, il designer e il .vbp sono tratti da tabelle presenti nel vostro eseguibile. Il sorgente VB6, invece, non esiste da nessuna parte — bisogna ricostruirlo, e questo lavoro è il prodotto.

Sotto il codice, lo studio mostra anche ciò che il decompilatore segnala per la procedura corrente: le diagnostiche, cioè ciò che non ha potuto fare e perché. È il riflesso da avere non appena un risultato sorprende.

6. Che cosa la compilazione conserva, e che cosa getta via

Questo capitolo spiega perché i vostri form tornano molto leggibili e i vostri moduli .bas con nomi tecnici. La regola è semplice:

Ciò di cui Visual Basic ha bisogno durante l'esecuzione, lo ha scritto nel file: VBReFormer lo ritrova. Ciò di cui non aveva più bisogno dopo la compilazione, lo ha gettato via — e nessuno può ritrovarlo.

Ciò che sopravvive: nomi di form, classi e moduli · nomi dei controlli · gestori di eventi · membri pubblici delle classi · proprietà d'interfaccia · chiamate al runtime VB (635 funzioni) · API Win32 (15 680 firme) · la struttura del codice · le stringhe.

Ciò che non è nel file: i commenti · i nomi delle variabili locali · i nomi dei parametri · le costanti con nome, sostituite dal loro valore · i nomi delle procedure dei moduli .bas · l'indentazione originale.

Un esempio verificabile

L'estratto seguente proviene da SETUP1.EXE, la procedura guidata d'installazione fornita con Visual Basic 6 — di cui Microsoft distribuisce il codice sorgente. Il confronto è quindi rifacibile da chiunque possieda VB6.

Sorgente originale, 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

Reso da 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

Logica identica, riga per riga. Right, Trim, Len, RTrim$ hanno il loro nome; il passaggio ByRef è dedotto. Invece il nome della procedura e quello del parametro sono persi, e le costanti compaiono con il loro valore — è il compilatore che le ha sostituite, non VBReFormer.

I marcatori

VBReFormer non indovina mai: un valore che non può essere stabilito viene marcato invece che inventato.

marcatore significato che cosa fare
proc_42C506 procedura designata dal suo indirizzo rinominarla — il nome si propaga
var_18, arg_8 variabile locale o parametro leggerne l'uso, poi rinominare
? valore non stabilito consultare la vista Assembly nello stesso punto

Un file che contiene un ? sarà rifiutato dall'IDE VB6. Il marcatore è lì perché decidiate voi, non per essere ricompilato così com'è. Un valore verosimile e falso è il peggior risultato che un decompilatore possa produrre.

7. I grafi

Due grafi, e non raccontano la stessa storia.

  • Chiamate — chi chiama che cosa: l'architettura del programma. Filtri Chiamanti, Chiamati o Entrambi, e un'opzione per nascondere i nodi isolati.
  • Flusso — da dove passa l'esecuzione: i blocchi, l'ingresso, le intestazioni dei cicli, i ritorni di ciclo e i blocchi marcati IRRAGGIUNGIBILE.

Cinque modi di leggere un blocco

Selezionate un blocco del grafo e scegliete che cosa volete vederci: Forma, IR, VB6, Assembly o P-code. È la stessa porzione di programma, a cinque livelli di lettura.

L'onestà della resa. Lo studio indica quanti blocchi sono ancorati alle righe del listato, e quanti sono senza indirizzo provato — le loro istruzioni cadono allora nella fascia precedente. Sapete quindi quale parte della suddivisione è certa.

I grafi richiedono una licenza: chi chiama che cosa e da dove passa l'esecuzione è l'architettura del programma. Il disassemblato e la struttura restano aperti senza.

8. L'anteprima e la licenza

Senza licenza, la vista Sorgente non vi è rifiutata: viene mostrata parzialmente mascherata. Vedete la struttura, i nomi ritrovati e la qualità reale della ricostruzione — sul vostro stesso binario — prima di pagare qualunque cosa.

È una scelta deliberata: un visitatore che non vede nulla non può giudicare. E se un abbonamento scade, vedete ciò che ritrovereste invece di una porta chiusa.

Una postazione alla volta

Una licenza VBReFormer apre una postazione alla volta — e un browser conta come una postazione. Se la vostra lavora altrove, lo studio vi propone di trasferirla qui dal vostro account, oppure di aggiungere una postazione. È un rifiuto morbido: avete pagato, non vi manca nulla.

9. Scaricare i vostri sorgenti

Il pannello di consegna produce un archivio .zip contenente il .vbp e i suoi file — .bas, .cls, .frm — scritti in ANSI, come l'IDE li attende. Il pannello annuncia il numero di file e il peso prima del download.

Leggete le note prima di aprire il progetto

Lo studio mostra «Ciò che non si è potuto ricostruire», con un perché per ogni voce. Alcune informazioni — i riferimenti esterni, le opzioni di compilazione, la modalità di avvio — non sono in alcuna struttura del binario: non sono state cancellate, non ci sono mai state. Vengono quindi segnalate invece che inventate.

Nell'IDE, se manca un riferimento, aggiungetelo da Progetto ▸ Riferimenti. Gli eventuali marcatori ? sono da trattare a mano.

Il pannello propone poi di analizzare un altro binario: la sessione riparte da zero, e il file precedente viene cancellato.

10. Online o Desktop?

Le due edizioni condividono lo stesso motore e restituiscono lo stesso codice. Non servono allo stesso uso.

Online Desktop
Installazione nessuna MSI, Windows 10+
Sistemi tutti Windows 10 e 11
Lingue dell'interfaccia 11 3
Albero, simboli, ricerca, rinomina
Le sette viste
Grafi delle chiamate e del flusso
Esportazione del progetto ✔ (zip) ✔ (cartella)
Vista esadecimale annotata
Risorse: inventario e contenuto
Risorse: estrazione in file
Designer disegnato, esportazione dell'immagine (sezione solo in testo)
Patch binarie
Riferimenti incrociati
Object Browser, API Browser
Segnalibri, opzioni di resa
Il lavoro sopravvive alla sessione
Fatturazione crediti abbonamento

In sintesi — Online per aprire un binario, capire che cosa fa e andarsene con i sorgenti. Desktop per lavorare a lungo su un binario: byte, risorse, riferimenti incrociati, patch, e un lavoro che non scompare quando si chiude la scheda.

11. Domande frequenti

Il mio binario viene conservato? No. Viene analizzato e poi cancellato con la vostra sessione. Vedere il capitolo 3.

Il mio file supera i 64 MB. È il limite dello studio, annunciato prima del rilascio. Per un binario più grande, l'edizione Desktop non ha questo vincolo di caricamento.

Dove sono le risorse del binario? Nella scheda Risorse, a sinistra — senza licenza. Vi vedete ogni voce con il suo tipo e la sua dimensione, e il suo contenuto quando la aprite: l'immagine viene disegnata, il testo mostrato, e il resto presentato in byte invece che nascosto. L'estrazione in file, invece, è propria dell'edizione Desktop, come la vista esadecimale.

Perché il codice si ferma a metà di una procedura? È l'anteprima: senza licenza, l'edizione gratuita mostra la struttura, i nomi e il disassemblato completo, ma il corpo ricostruito richiede una licenza.

Ho chiuso la scheda e ho perso tutto. Il lavoro non sopravvive alla sessione. Scaricate l'archivio prima di andarvene; il binario, invece, è ancora sulla vostra macchina.

Il codice esportato si ricompila così com'è? Spesso: su un banco di 149 progetti, 121 si ricompilano senza ritocchi. Gli altri richiedono di aggiungere un riferimento o di trattare alcuni marcatori.

Il mio eseguibile è compresso (packer). Deve essere decompresso prima, altrimenti le strutture VB6 non sono visibili nel file.

È legale? Dipende dalla vostra giurisdizione e dai vostri diritti sul binario — è il senso della dichiarazione spuntata al rilascio. L'uso previsto è il recupero del vostro codice, o di un codice sul quale detenete i diritti o un'autorizzazione.