[VB6-SRC] mZombieInvoke - Llama APIs sin declararlas

Iniciado por Karcrack, 9 Agosto 2010, 13:54 PM

0 Miembros y 1 Visitante están viendo este tema.

Karcrack

 >: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 ::)

Komodo

Esta interesante pero este S1 ¿?¿?

Invoke = Zombie_AddRef(S1)

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


Karcrack

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

Karcrack

#3
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 :)

Komodo

Vale, creo que no habia visto eso.

Esta bastante interesante la idea, saludos Karcrack


LeandroA

Grosisimo Karcrack  ;-) , me gustan tus funciones.

Saludos.

Karcrack

Cita de: LeandroA en  9 Agosto 2010, 18:20 PM
Grosisimo Karcrack  ;-) , me gustan tus funciones.

Saludos.
Muchas gracias Leandro :)

EddyW

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

Karcrack

Simplemente estuve mirando que hacian las funciones exportadas, para ver si alguna permitia ejecutar algun puntero o algo similar... primero encontre __vbaGosubReturn, 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...

EddyW

Ok, gracias nuevamente está bastante bueno ;)

SaluDOS!!!