Il
VB Decompiler, prodotto dalla
GPcH Soft, è un decompilatore di programmi EXE, DLL o OCX scritti in Visual Basic 5/6 e compilati nella modalità
P-Code (Pseudocode o Packed Code). Quest’ultimo è il codice interpretato al momento dell'esecuzione da una virtual machine contenuta nella libreria di runtime, la famigerata
MSVBVM60.DLL, o
MSVBVM50.DLL per la versione 5. Per questo il
reverse engineering del
P-Code può dare molte soddisfazioni riuscendo ad estrapolare parecchie informazioni sulla struttura originale del codice sorgente.
Questo però non toglie merito al
VB Decompiler, uno strumento semplice da usare, ma potente nel risultato finale. Infatti, sebbene esso non possa recuperare i nomi originali delle funzioni e delle variabili, riesce comunque ad elencare dettagliatamente tutte le componenti del progetto (
vbp, frm, frx, bas e ctl). Ciò che non viene completamente decompilato in sorgente Visual Basic viene disassemblato in una sorta di
pseudoassembler e Basic. La capacità di analizzare il
P-Code si manifesta attraverso la ricerca di tutte le chiamate alle funzioni API e l'indice di tutte le stringhe contenute al suo interno.
Sono previste due versioni di
VB Decompiler, una Lite completamente gratuita e l'altra Professional dal costo di 99 dollari. Le differenze a favore della versione commerciale riguardano principalmente la possibilità di decompilare completamente il
P-Code importato — con o senza
stack parsing — e la possibilità di “offuscare” il codice dei programmi VB5/6.
Per il resto anche con la versione
free è possibile estrapolare dall'eseguibile le form (
frm e
frx) e i file oggetto dei controlli utente (
ctl), salvare i dati decompilati in un singolo file di database (
vdd) e richiamarli dal
VB Decompiler stesso. Quest'ultima funzionalità si rivela molto comoda per consultare del codice e ricercare funzioni senza per questo dover caricare o installare l'IDE di Microsoft.
L'unico vero problema riguarda il fatto che i file decompilati molto spesso eccedono i 64 KB massimi supportati dal Visual Basic per ogni file che deve caricare. Per ovviare all'inevitabile “out of memory”, è necessario dividere in più parti lo stesso modulo. In realtà, per applicazioni molto complesse è talmente difficile poter ricompilare l'intero progetto senza dover mettere mano al codice che questo diventa un problema secondario.
Chiaramente tutto il discorso del
reverse engineering è perfettamente legittimo qualora non si violi alcun tipo di copyright. Un'ultima considerazione riguarda il fatto che il programma riconosce pure gli eseguibili in Delphi, ma per la decompilazione vera e propria rimanda al
De-Decompiler di prossima uscita, probabilmente in ottobre.