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!!

Imagen


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.
gracias por este grande aporte , siempre me quedaba en el dll y no sabía como llegar al entrypoint del ejecutable Vb
un saludo

Mostrar/Ocultar

Muchas gracias por enseñarnos esto bloodday, como siempre yo estoy dispuesto a aprender (cuando tengo tiempo yo también miro muchas archivos a través del exa y olly).
Saludos
-Aprovechemos mientras Windows es vulnerable.
-No hagas a otros lo que no te gustaría que hagan con.... tu mamá.
-El mejor Snifer es tu propio ISP.
Si, cosas así ya están muy quemadas y escritas... en CracksLatinos tienes bastante información al respecto, como se que son muchísimas teorías, y cualquiera dice buah, hay como 1200 ya no leo nada, y en realidad habrán como 5000, lo suyo es que bajes un buscador que hay de teorías, y pones "VB" y los que te interesen te los lees, luego escribes algo acerca de las investigaciones y de paso pues pones la fuente de inspiración para que otra persona desarrolle algo parecido. Sigue así, un saludo.

Shaddy.

P.D: Se escribe EntryPoint.
http://abssha.blogspot.com

"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

Shaddy
Responder

Volver a “Manuales”