Probablemente alguien ya se haya dado cuenta de esto, y haya hecho un señor tutoríal al respecto, pero yo no he visto ni leído nada al respecto, por ello me dedico a escribirlo yo.
Pues como todos sabemos, los programas hechos en VB siempre empiezan con un push, y una llamada a ThunRTMain.
Pero hay programas que queremos analizar completos desde el debugger (Malware la mayoría de las veces) y al estar hechos en VB pues nos perdemos dentro de la dll de VB (los compilados en código nativo, ya que los compilados en P-Code nunca saldrán de la dll del VB) y nunca llegamos a donde se empieza a ejecutar el código de el programa que nos interesa.
Yo he descubierto (por lo menos yo no lo sabia) una forma fácil y rápida de encontrar el “punto de entrada” de cualquier programa hecho en VB Código nativo.
Como lo descubrí:
Pues lo que hice fue fácil pero para nada rápido. Entre en la dll de VB y puse un Memory Break Point on Acces y a correr con F9 tantas veces como pare el programa hasta que llegara de nuevo a nuestro ejecutable.
Una vez ahí vi cual era la dirección del “Entri Point” y reinicie el programa.
Pensando un poco me dije: la dll del VB no sabe hacia donde retornar para pasar el control al ejecutable, así que el ejecutable debe indicárselo… pero lo único que hace el ejecutable antes de irse a la dll del VB es un push, asi que ahí debe estar la clave.
Parado en el Push di click Secundario > Follow in Dump > Imediate Constant. Y en el Dump Aparecerá una string que pone “VB5!-” y ahí dos líneas mas abajo en la parte que esta pegada a la columna de las string esta el numero mágico!!
Como sabemos, la memoria almacena los bytes al revés por lo tanto ese 36404000 se convierte en 00404036 y ahí será donde nuestro programa tome el control de su ejecución.
saludos
editado: parece que nadie aca analiza programas con el olly xD
//No estan permitidos los refer en este sitio.
SI ERES CHAVISTA Y HONESTO NO ERES INTELIGENTE.
SI ERES CHAVISTA E INTELIGENTE NO ERES HONESTO.
SI ERES INTELIGENTE Y HONESTO NO ERES NI SERAS NUNCA CHAVISTA.
SI ERES CHAVISTA Y HONESTO NO ERES INTELIGENTE.
SI ERES CHAVISTA E INTELIGENTE NO ERES HONESTO.
SI ERES INTELIGENTE Y HONESTO NO ERES NI SERAS NUNCA CHAVISTA.