Artículo · Ingeniería Inversa

Reversing a programas en Visual Basic

Rafael PeruCrackersRafael PeruCrackers 4 min de lectura

Introducción

En algunos casos nos vamos a encontrar con programas desarrollados en Visual Basic, al depurarlo con Ollydbg, veremos que no es legible (Son Código Nativos), de lo cual se utiliza otra herramienta para facilitar el Reversing en Visual Basic. 

 

Herramientas 

  •     Ollydbg
  •     Crackmes (https://mega.nz/#!MJhgCKzS!c3Yc7fW3Jd4YrGfGJZF4BP5iAIf3DeCBUWo2SOBljLs )
  •     VBReFormer V6.4 Professional Edition ( https://www.decompiler-vb.net/vbreformer-professional.aspx )
  •     HxD Editor Hexadecimal (https://mh-nexus.de/en/hxd/ )
 

Al Ataque

Ya es sabido que debemos sacar un Backup de nuestro nuevo reto, ya no repetiré este consejo en las siguientes tutoriales, vamos a ejecutar  nuestro reto y ver que nos solicitará, a primera vista vemos que encontramos un botón deshabitado, de lo cual el reto es habilitar este botón. 

 

 

Para validar lo que comente en líneas arriba sobre la complejidad que lleva realizar reversing en programas de Visual Basic, vayamos a depurar el crackmes en OLLYDBG y busquemos los string, de lo cual observaras que no te brindan ninguna ayuda al momento de activar o encontrar el BAD BOY o GOOD BOY, debido a esta complejidad, se optó por usar una nueva herramienta llamada VBReFormer.

 

 

Luego de abrir VBReFormer, validemos en que lenguaje de desarrollo el crackmes, asi que ejecutemos RDG PACKER DETECTOR y observamos que se desarrolló en Visual Basic 6.0 Codigo Nativo y que no se encuentra ofuscado o empacado.

 

 

Luego de procesadas abrir el crackmes, en VBReFormer,  hacemos clic en File -> Open -> EnableME#1

 

 

Cuando decompilamos nos mostrará un aviso de advertencia sobre Copyright, hacemos clic en Continue.

Vayamos a la Interfaz gráfica, donde veremos las dos ventanas Form1 y Form2, aquellas personas que saben programar en visual, identifican rápidamente las partes de crackmes.

Vamos a seleccionar Form1 – VB.Form, nos mostrará, en la primera pestaña Visual Basic Code, como dice nos mostrará código básico, de lo cual el que nos interesa es el botón Enable Me!, en el cuadro amarillo vemos el valor Enabled = 0, lo que debemos hacer es activarlo, cambiando el valor a 1.

 

 

Vamos a la segunda pestaña Object Properties, luego hacemos clic en Form1 – VB Form, y nos mostrará cinco opciones que son los elementos que tiene el Form1, los que nos interesa por ahora es el elemento que nos haga una referencia a un Boton, en este caso es Command1 – VB CommandButton.

 

 

Vemos que nos muestra los valores que presenta el boton Enable Me!,  como el tamaño, el texto a mostrar, si se encuentra habilitado o deshabitado, en este crackmes vemos que el valor Enabled tiene el valor False, pasaremos a cambiarlo por True.

 

 

Al habilitar el botón Enabled con el valor True, pasaremos a guardar los cambios.

 

 

Vamos a File -> Save binary as… (Presionar Ctrl + R), y lo guardamos con el nombre EnableME#1patch.

 

 

Ejecutamos el crackmes nuevamente, y observamos que el botón Enable ME!, aún se encuentra deshabliitado, esto es debido a que hay otro elemento que afecta la funcionalidad del crackmes, veamos nuevamente en el VBReFormer.

 

Nuevamente llegamos a ver los elementos conformados por Form1, en este caso se analizaremos, t3-VB.Timer y temposecondo-VB.Timer.

 

 

En t3-VB.Timer, vemos que tiene Interval, Left y Top, vayamos a estudiar la función INTERVAL

 

 

Les dejo este enlace https://msdn.microsoft.com/es-es/library/zffx82xt(v=vs.90).aspx donde nos muestra : 

Como nos muestra si el tiempo es mayor que cero, entonces iniciara, sino fuera así se detendrá, los valores son expresados en milisegundos, es decir si queremos ejecutar 12 segundos debemos agregar el valor 12000.

 

 

Modifiquemos el valor del Intervalo 50 por 12000, lo que realizará es que estará activo por 12 segundos, al terminar el tiempo, se desactiva la función.

 

 

Vayamos a tiempo segundo – VB.Timer, y cambiamos el valor del Intervalo 60 por 12000.

 

 

Ahora vayamos a Form2 – VB.Form, luego seleccionamos Timer1 – VB.Timer, nuevamente cambiamos el valor de Intervalo por 12000, luego pasamos guardar toda las configuraciones hechas.

 

 

Al guardar nuestro crackmes, y ejecutarlo nuevamente, nos muestra que está habilitado y hago click para que me salta el GOOD BOY

 

 

Por ahora sería todo, en este pequeño tutorial, saludos a Ricardo Narvaja, a los integrantes de PeruCrackers(Davicomrm, Nox, Abel, Dani, Sofdat) y Entre Amigos CLS(Apuromafo, thunder, Ashura, IvisonCLS), por sus aportes a la comunidad de Cracklatinos.

 

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Pentesting .

Rafael PeruCrackers

Escrito por

Rafael PeruCrackers

Estudiante de la ingenieria Inversa usando las herramientas de Ollydbg y el actual IDA PRO, actualmente me encuentro investigando sobre Creacion de Exploit, con animo de ayudar a las personas que les interesa el mundo del reversing, :)