Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => 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:
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
Cita de: 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.
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 (asm) [Seleccionar]

MOV     EAX, DWORD PTR SS:[ESP+4]                      ;  EAX = &Zombie_STRUCT1.cCurrent
MOV     EAX, DWORD PTR DS:[EAX+8]                      ;  EAX = Zombie_STRUCT1.ppS2
PUSH    EAX
MOV     ECX, DWORD PTR DS:[EAX]                        ;  ECX = &Zombie_STRUCT2.lNull
CALL    NEAR DWORD PTR DS:[ECX+4]                      ;  ECX + 4 = Zombie_STRUCT2.lAddr
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
Cita de: LeandroA en  9 Agosto 2010, 18:20 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.

;-)