Manual de VBReFormer Desktop
Manual de uso de VBReFormer Desktop: instalar, activar la licencia, leer las siete vistas, analizar un binario, exportar un proyecto VB6 recargable en el IDE.
Actualizado el 20/9/202614 capítulos
La aplicación instalada en su equipo Windows. Abre sus ejecutables Visual Basic 5 y 6, reconstruye su código fuente y le devuelve un proyecto que el IDE de VB6 vuelve a abrir — con el banco de trabajo completo: bytes, recursos, diseñador, grafos, referencias cruzadas y parches binarios.
1. Instalar
VBReFormer Desktop se entrega como instalador MSI, uno por idioma de interfaz. El paquete es autónomo: incluye todo lo que necesita, no hay que instalar ningún framework de antemano.
| requisito | |
|---|---|
| Sistema | Windows 10 versión 1607 o posterior, o Windows 11 |
| Arquitectura | x64 |
| Framework | ninguno — el paquete es autónomo |
| Conexión | necesaria para la descompilación y la validación de la licencia |
| Idiomas de la interfaz | español, inglés, francés |
Windows XP, Vista, 7 y 8 no están soportados. La aplicación se apoya en una plataforma que exige Windows 10 como mínimo. Si su equipo es más antiguo, VBReFormer Online funciona en cualquier navegador, en cualquier sistema — es la vía recomendada en ese caso.
Dónde trabaja el motor
La aplicación es local; la reconstrucción del código, en cambio, se ejecuta en nuestros servidores. Eso es lo que significa el nombre de la edición — Desktop + Cloud. Todo lo que se lee en el archivo (el formato, los bytes, el desensamblado, los recursos) se calcula en su equipo; todo lo que se reconstruye pasa por el servicio.
El cuadro Ayuda ▸ Acerca de le indica en todo momento la versión del motor conectado, la del contrato y la lista de capacidades servidas — útil cuando una función no aparece: si no está en esa lista, no es la interfaz la que la rechaza.
2. Activar su licencia
Sin licencia, la aplicación se abre y trabaja: puede explorar un binario, leer el desensamblado entero, los bytes, los recursos y el diseñador. Lo que la licencia abre es la reconstrucción del código VB6 y la exportación del proyecto.
Un puesto a la vez
Una licencia VBReFormer abre un puesto de trabajo a la vez. Si ya la está usando en otro sitio, la aplicación se lo dice claramente y le propone dos salidas: transferir la licencia a este equipo desde su cuenta, o añadir un puesto.
Es un rechazo suave: usted ha pagado, no le falta nada. El mensaje lo dice así en lugar de devolverle un error técnico.
Un navegador abierto en VBReFormer Online también cuenta como un puesto: el estudio web y la aplicación de escritorio consumen la misma licencia.
3. La ventana
- Abra un binario. Archivo ▸ Abrir un binario VB6 (
Ctrl+O). Los formatos aceptados son.exe,.dll,.ocxy.scr. La barra de estado muestra el análisis en curso, luego el nombre del archivo y su forma de compilación — código nativo o P-code. - Recorra el panel PROYECTO. A la izquierda, el binario se presenta como VB6 lo veía: formularios, clases, módulos y sus procedimientos. El árbol se rellena bajo demanda — desplegar un nodo pide sus hijos; nada se calcula de antemano, lo que mantiene rápida la apertura incluso con un ejecutable grande.
- Seleccione un procedimiento. Las vistas de ese nodo aparecen a la derecha. Si no se sirve ninguna vista para un nodo, el motivo se escribe en pantalla en lugar de un panel vacío.
Los paneles inferiores
| pestaña | para qué sirve |
|---|---|
| Salida | el registro de las operaciones. Conserva el idioma en que se escribió cada línea, aunque cambie el idioma de la interfaz — un registro es una constancia, no una visualización. |
| Diagnósticos | lo que el motor se ha negado a hacer, y por qué. El reflejo que hay que tener en cuanto un resultado sorprende. |
| Analizador | las referencias cruzadas: llamadores de un procedimiento, apariciones de un símbolo. El resultado es clicable. |
La visibilidad de los miembros
Cada miembro del árbol lleva su visibilidad tal como el binario la declara — (Public), (Private),
(Friend). Son palabras clave de VB6: no se traducen. Un miembro cuya visibilidad no se ha podido
leer no lleva ninguna marca: no se escribe lo que no se sabe.
4. Las siete vistas
Están ordenadas en tres familias, y esa separación le dice de dónde viene lo que lee. Es lo más útil que hay que entender.
Familia «Código» — reconstruida por análisis
| vista | lo que muestra | cuándo consultarla |
|---|---|---|
| Visual Basic 6 | la fuente reconstruida, estructurada | por defecto — es lo que busca |
| IR | la representación intermedia | para ver lo que el motor ha entendido |
| Desensamblado | las instrucciones máquina x86 | para ver lo que el procesador ejecuta |
| P-code | los opcodes de la máquina virtual VB6 | solo binarios P-code |
Bajar por esta lista es subir hacia la máquina. Ante la duda sobre una línea: Visual Basic 6 dice la intención, Desensamblado dice el hecho.
Familia «Archivos del proyecto» — leída, no deducida
Diseñador (.frm), Proyecto (.vbp) y Estructura. Nada de esto pasa por la reconstrucción del código: todo se ha leído en tablas del binario, y lo que no se ha podido leer se escribe con todas las letras en lugar de rellenarse. Es la familia más fiable del producto, y la que no depende de ninguna inferencia.
Familia «Recursos»
Véase el capítulo 9.
5. Lo que la compilación conserva, y lo que desecha
Este capítulo explica por qué algunas partes de su código salen casi intactas y otras con nombres técnicos. La regla es sencilla:
Lo que Visual Basic necesita durante la ejecución, lo escribió en el archivo: VBReFormer lo recupera. Lo que ya no necesitaba después de la compilación, lo desechó — y nadie puede recuperarlo.
Lo que sobrevive: nombres de formularios, clases y módulos · nombres de los controles · manejadores de eventos · miembros públicos de las clases · todas las propiedades de interfaz · llamadas al runtime de VB (635 funciones) · API Win32 (15 680 firmas) · la estructura del código · las cadenas.
Lo que no está en el archivo: los comentarios · los nombres de las variables locales · los
nombres de los parámetros · las constantes con nombre, sustituidas por su valor · los nombres de los
procedimientos de módulos .bas · la sangría original · Option Explicit y los Enum.
La consecuencia práctica. Sus formularios salen muy legibles. Sus módulos
.bassalen correctos, pero con nombres técnicos (proc_42C506). La función Renombrar (F2) existe para eso, y propaga el nuevo nombre a todos los sitios de llamada del proyecto — véase el capítulo 7.
Dos ejemplos verificables
Los extractos siguientes proceden de SETUP1.EXE, el asistente de instalación entregado con Visual Basic 6. Microsoft distribuye su código fuente en la misma carpeta — así que puede rehacer la comparación usted mismo.
Un procedimiento de módulo .bas
Fuente original, 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
Generado por 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
Lógica idéntica, línea por línea. Right, Trim, Len, RTrim$ tienen nombre; el paso
ByRef se deduce correctamente. En cambio, el nombre del procedimiento y el del parámetro se han
perdido, y las constantes aparecen con su valor — las sustituyó el compilador, no VBReFormer.
Un manejador de evento
Fuente original, BEGIN.FRM:
Private Sub cmdExit_Click()
ExitSetup Me, gintRET_EXIT
End Sub
Generado por VBReFormer:
Private Sub cmdExit_Click()
Set var_18 = Me
basSetup1.proc_41CE2D var_18, var_1C
End Sub
El nombre del formulario, el del botón y el del manejador están intactos; Me se reconoce; el
módulo llamado tiene nombre, lo que le dice adónde ir. Solo el procedimiento llamado, que vive en
un .bas, conserva su nombre de dirección.
Los marcadores
VBReFormer nunca adivina. Un valor que no puede establecerse se marca en lugar de inventarse — un valor verosímil y falso es el peor resultado que un descompilador puede producir.
| marcador | significado | qué hacer |
|---|---|---|
proc_42C506 |
procedimiento designado por su dirección | renombrarlo (F2) |
var_18, arg_8 |
variable local o parámetro | leer su uso, luego renombrar |
vtbl_3C |
llamada por tabla virtual no resuelta | el Object Browser suele decir de qué biblioteca se trata |
? |
valor no establecido | consultar la vista Desensamblado en el mismo punto |
Un archivo que contenga un
?será rechazado por el IDE de VB6. El marcador está ahí para que usted decida, no para recompilarse tal cual.
6. Las herramientas de análisis
Aquí es donde la edición de escritorio se distingue más: ofrece un banco de trabajo completo, mientras que el estudio web se concentra en leer, descompilar y exportar.
| herramienta | atajo | lo que le aporta |
|---|---|---|
| Analizar las referencias | Mayús+F12 |
llamadores de un procedimiento, apariciones de un símbolo — resultado clicable, y la cobertura está cuantificada: lo que el análisis no ve se cuenta, no se calla |
| Lista de símbolos | Ctrl+Mayús+S |
el inventario completo, filtrable por naturaleza y por ámbito — distingue los nombres leídos de los nombres sintetizados |
| Grafo de llamadas | Ctrl+Mayús+A |
quién llama a qué, a tres escalas, con filtros llamadores / llamados |
| Grafo de flujo de control | Ctrl+Mayús+G |
la forma de un procedimiento: bloques, bucles, aristas de retorno, bloques inalcanzables |
| Object Browser | Ctrl+Mayús+B |
«¿dónde está definido esto?» cuando la respuesta está fuera del binario |
| API Browser | Ctrl+Mayús+P |
prototipos, alias y notas de las declaraciones Win32 |
| Bibliotecas citadas | Ctrl+K |
de qué depende el binario |
| Buscar programas VB | Ctrl+L |
encontrar los ejecutables VB de una carpeta |
| Buscar | Ctrl+Mayús+F |
búsqueda de texto en las vistas servidas |
| Marcadores | Ctrl+F2 |
marcar lugares, volver a ellos (F8 / Mayús+F8) |
| Navegación atrás / adelante | Alt+← Alt+→ |
como en un navegador |
Por qué la cobertura está cuantificada. El grafo de llamadas nativo ve las llamadas directas; no ve las llamadas por tabla virtual ni los punteros a función. En lugar de presentar una lista parcial como completa, VBReFormer muestra lo que omite, contado. Así sabe hasta dónde confiar en el resultado.
7. Renombrar
Es el gesto central del trabajo sobre un binario: el descompilador le devuelve la lógica, usted le
devuelve los nombres. F2 sobre un símbolo, o desde la lista de símbolos.
El cuadro muestra tres cosas que los descompiladores suelen ocultar:
- el origen del nombre actual — dado por usted, inferido por el descompilador, o reconstruido;
- las propuestas del descompilador, cada una con su prioridad y la fuente de la que procede;
- el nombre original, al que siempre se puede volver.
El renombrado es global. Renombre un procedimiento una vez, y los sitios de llamada de los demás módulos siguen — incluidos los que aún no ha abierto.
Un renombrado rechazado lo es siempre con su motivo. Dos casos frecuentes: el motor no anuncia la capacidad de renombrar en este documento, o la vista actual solo lleva fragmentos léxicos — suficiente para colorear el texto, no para designar una entidad. En ambos casos el mensaje lo dice, en lugar de no hacer nada.
8. Bytes y parches binarios
Navegar ▸ Ver los bytes (Ctrl+Mayús+H) abre la vista hexadecimal anotada: no muestra solo
bytes, dice qué representa cada zona. Ir a la dirección (Ctrl+G) le lleva directamente allí.
Modificar el ejecutable
El modo «bruto» permite escribir bytes y producir un ejecutable modificado. Está enmarcado por cuatro rechazos, y cada uno protege algo:
| rechazo | por qué |
|---|---|
| El archivo analizado nunca es el destino | el motor nunca lo abre en escritura; la interfaz no deshace esa garantía |
| Sobrescribir un archivo existente se confirma | «esto no se deshace» |
| La firma Authenticode se eliminará | se pide su conformidad antes; podrá volver a firmar con su propio certificado |
| Un parche rechazado no escribe nada en absoluto | ningún archivo a medio escribir |
El estudio web no ofrece los parches binarios ni la vista hexadecimal: son dos funciones propias de la edición de escritorio.
9. Recursos y diseñador
Los recursos del binario
Iconos, cursores, mapas de bits, tablas de cadenas, información de versión: todo lo que habría
contenido un archivo .res. Cada entrada muestra su tipo, su tamaño y lo que se sabe hacer con ella,
y la extracción es posible entrada por entrada o en su totalidad.
Un recurso que el producto no sabe pintar sigue listado y se muestra en bytes: nunca se oculta. Y si no se han podido seguir entradas del directorio, un aviso lo dice — entonces sabe que la lista es más corta que lo que el binario contiene.
El diseñador de formularios
La superficie del formulario se pinta tal como VB6 la habría mostrado, a partir de las propiedades
leídas en el binario, en el orden de pintado correcto. La imagen del formulario se exporta (Ctrl+I).
Las propiedades son de solo lectura: VBReFormer sabe leer la superficie de un formulario, aún no sabe reescribirla en el ejecutable compilado. Véase el capítulo 13.
10. Exportar el proyecto
- Compruebe primero el panel Diagnósticos. Dice lo que no se ha podido hacer. Leerlo antes de la exportación evita buscar más tarde por qué falta un elemento.
- Archivo ▸ Exportar el proyecto VB6. Elija una carpeta de destino vacía.
- Lea las notas de exportación. VBReFormer escribe lo que no ha podido recuperar, y por qué. Cierta información — las referencias externas, las opciones de compilación, el modo de arranque — no está en ninguna estructura del binario: no se borró, nunca estuvo ahí. Se señala en lugar de inventarse.
- Abra el
.vbpen Visual Basic 6. Las cabeceras que exige el IDE (VERSION,Attribute VB_Name) están escritas. Si falta una referencia, añádala por Proyecto ▸ Referencias.
Dos rechazos de escritura que le protegen. Los archivos VB6 se escriben en ANSI 1252. VBReFormer se niega a escribir si ese juego de caracteres no está disponible en la máquina — escribir en otro produciría un archivo falso en silencio — o si un carácter de su código no existe en él, en cuyo caso le dice cuál y su punto de código.
11. Las opciones
| ajuste | lo que hace |
|---|---|
| Tamaño de la sangría | solo afecta al código reconstruido: el desensamblado, la IR, el P-code, el bloque del diseñador y el .vbp no los formatea este editor. |
| Página de códigos (diseñador) | la página en la que se leen los rótulos y textos del diseñador. Un binario VB6 no declara la suya en ninguna parte — medido sobre 236 binarios. Si los rótulos de un formulario aparecen con caracteres incoherentes, es este ajuste el que hay que cambiar. |
Agrupar bajo With…End With |
desactivado por defecto. La salida está totalmente cualificada (Frame1.Caption), porque el compilador disuelve los With y reconstruirlos sería una suposición. Actívelo si prefiere la legibilidad a la literalidad. |
| Coloreado de sintaxis | un rol, un color — los roles vienen del motor, que dice qué es cada fragmento. Notación #RRGGBB; una paleta inválida no se aplica a medias. |
| Idioma de la interfaz | español, inglés, francés — el cambio es inmediato. |
Los ajustes de renderizado viajan con cada petición de visualización; nunca se fijan como un estado de sesión. Cambiar la sangría no vuelve a analizar nada.
12. Atajos
| atajo | acción |
|---|---|
Ctrl+O |
Abrir un binario VB6 |
F2 |
Renombrar el símbolo bajo el cursor |
Mayús+F12 |
Analizar las referencias |
Ctrl+Mayús+F |
Buscar en el proyecto |
Ctrl+G |
Ir a la dirección |
Ctrl+Mayús+H |
Ver los bytes |
Ctrl+Mayús+S |
Lista de símbolos |
Ctrl+Mayús+B |
Object Browser |
Ctrl+Mayús+P |
API Browser |
Ctrl+Mayús+G |
Grafo de flujo de control |
Ctrl+Mayús+A |
Grafo de llamadas |
Ctrl+K |
Bibliotecas citadas |
Ctrl+L |
Programas VB de una carpeta |
Ctrl+F2 |
Poner o quitar un marcador |
F8 / Mayús+F8 |
Marcador siguiente / anterior |
Ctrl+Mayús+F2 |
Lista de marcadores |
Alt+← / Alt+→ |
Navegación atrás / adelante |
Ctrl+I |
Guardar la imagen del formulario |
13. Límites conocidos
Modificar la interfaz de un ejecutable compilado
VBReFormer lee la superficie de un formulario y todas sus propiedades — aún no sabe reescribirlas en el ejecutable. La sustitución de un recurso incrustado y la adición de una propiedad oculta sin recompilar no están disponibles. Los parches binarios — escribir bytes en una dirección — sí lo están (capítulo 8).
Los recursos .ctx de UserControl
No se escribe ningún archivo .ctx en la exportación. Si su proyecto contiene UserControl con
recursos persistidos, esa parte hay que reconstituirla.
Windows anterior a 10
Use VBReFormer Online: basta un navegador, sea cual sea el sistema.
Lo que ningún descompilador supera
Comentarios, nombres de variables locales, constantes con nombre: no están en el archivo. Véase el capítulo 5.
14. Preguntas frecuentes
Una función del menú no responde. ¿Por qué? Abra Ayuda ▸ Acerca de y mire la lista de capacidades servidas. Si la función no figura en ella, no es la interfaz la que rechaza: el motor no la sirve para este documento. Los mensajes de la aplicación, por cierto, lo dicen explícitamente.
¿El código exportado se recompila tal cual? A menudo: en un banco de 149 proyectos, 121 se recompilan sin retoques. Los demás piden añadir una referencia o tratar algunos marcadores.
Los rótulos de mi formulario son ilegibles. Es la página de códigos. Un binario VB6 no declara en ninguna parte la de sus textos de diseñador — ajústela en las Opciones (capítulo 11).
¿Por qué mis formularios son más legibles que mis módulos? Porque VB6 conserva los nombres de controles y de eventos para funcionar, mientras que resuelve los procedimientos de módulos en simples direcciones. Véase el capítulo 5.
Mi ejecutable está comprimido (packer). ¿Es un problema? Sí: hay que descomprimirlo antes, si no las estructuras VB6 no son visibles en el archivo.
¿Se puede descompilar un .ocx o una .dll ActiveX?
Sí, y el inventario de miembros públicos suele ser más rico, puesto que COM obliga a nombrarlos.
¿Mi binario se envía a alguna parte? La lectura del formato, los bytes, el desensamblado y los recursos se procesan en su equipo. La reconstrucción del código se ejecuta en nuestros servidores — es el sentido de la edición Desktop + Cloud.
¿Es legal? Depende de su jurisdicción y de sus derechos sobre el binario. El uso previsto es la recuperación de su propio código, o de un código sobre el que posee los derechos o una autorización.
Ver también
Manual de VBReFormer OnlineProbar sin comprar