Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Karcrack en 9 Agosto 2010, 13:54 pm



Título: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Karcrack en 9 Agosto 2010, 13:54 pm
 >:D >:D

Despues de debuggear durante horas el MSVBVM60.DLL descubrí una función que permitía llamar a un puntero (sin destrozar mucho el stack :D) esta se llama Zombie_AddRef y VB6 la utiliza para cargar clases e interfaces :)

Si alguien quiere mas explicación sobre lo que hace esa función y como lo he aprovechado para llamar codigo que pregunte ;)

Despues de esta breve explicacion aqui teneis el code:
Código:
http://www.cobein.com/wp/?p=567


Saludos ::)


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Komodo en 9 Agosto 2010, 14:08 pm
Esta interesante pero este S1 ¿?¿?

Invoke = Zombie_AddRef(S1)

lo demás si que lo he entendido por encima.


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Karcrack en 9 Agosto 2010, 14:09 pm
Esta interesante pero este S1 ¿?¿?

Invoke = Zombie_AddRef(S1)

lo demás si que lo he entendido por encima.
S1 es la estructura Zombie_STRUCT1

Nota:Todas las estructuras que hay en el codigo las he creado yo


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Karcrack en 9 Agosto 2010, 14:15 pm
Si entiendes algo de ASM esto te lo aclarara todo respecto a las estructuras:

Zombie_AddRef@MSVBVM60:
Código
  1. MOV     EAX, DWORD PTR SS:[ESP+4]                      ;  EAX = &Zombie_STRUCT1.cCurrent
  2. MOV     EAX, DWORD PTR DS:[EAX+8]                      ;  EAX = Zombie_STRUCT1.ppS2
  3. PUSH    EAX
  4. MOV     ECX, DWORD PTR DS:[EAX]                        ;  ECX = &Zombie_STRUCT2.lNull
  5. CALL    NEAR DWORD PTR DS:[ECX+4]                      ;  ECX + 4 = Zombie_STRUCT2.lAddr
  6. RET     4

Saludos :)


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Komodo en 9 Agosto 2010, 14:17 pm
Vale, creo que no habia visto eso.

Esta bastante interesante la idea, saludos Karcrack


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: LeandroA en 9 Agosto 2010, 18:20 pm
Grosisimo Karcrack  ;-) , me gustan tus funciones.

Saludos.


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Karcrack en 9 Agosto 2010, 22:04 pm
Grosisimo Karcrack  ;-) , me gustan tus funciones.

Saludos.
Muchas gracias Leandro :)


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: EddyW en 10 Agosto 2010, 03:27 am
Wenas,

Muy bueno Karcrack,
Tengo una duda, tu que lo debugeaste no supiste para que sirve la función Zombie_Invoke?, no entiendo mucho de ASM (Aún aprendo) y estuve usando PEExplorer para extraer las funciones pero no me muestra los parámetros así que no le pude entender :P

Si llego a usarlo en algún proyecto seguro te pongo en los créditos ;)

SaluDOS!!!


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Karcrack en 10 Agosto 2010, 11:21 am
Simplemente estuve mirando que hacian las funciones exportadas, para ver si alguna permitia ejecutar algun puntero o algo similar... primero encontre __vbaGosubReturn (http://www.advancevb.com.ar/?p=519), pero destrozaba gran parte del stack... asi que decidi seguir buscando... y Zombie_AddRef como podras ver en el codigo de ASM hace una llamada a partir de un parametro... luego cree las estructuras para que las distancias encajasen y leyese la direccion sin problemas...


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: EddyW en 10 Agosto 2010, 16:02 pm
Ok, gracias nuevamente está bastante bueno ;)

SaluDOS!!!


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: Karcrack en 14 Agosto 2010, 17:32 pm
He actualizado el enlace, ahora esta el fichero TLB que permite que sea indetectable en caso de que algun antivirus detecte la cadena de DllFunctionCall() fuera de la IAT ;)

Saludos


Título: Re: [VB6-SRC] mZombieInvoke - Llama APIs sin declararlas
Publicado por: wh0! en 14 Agosto 2010, 21:14 pm
Sencillamente Karcrack eres digno de admirar!
tus códigos son de lo mejor bro.

 ;-)