>: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 ::)
Esta interesante pero este S1 ¿?¿?
Invoke = Zombie_AddRef(S1)
lo demás si que lo he entendido por encima.
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_STRUCT1Nota:
Todas las estructuras que hay en el codigo las he creado yo
Si entiendes algo de ASM esto te lo aclarara todo respecto a las estructuras:
Zombie_AddRef@MSVBVM60:
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 :)
Vale, creo que no habia visto eso.
Esta bastante interesante la idea, saludos Karcrack
Grosisimo Karcrack ;-) , me gustan tus funciones.
Saludos.
Cita de: LeandroA en 9 Agosto 2010, 18:20 PM
Grosisimo Karcrack ;-) , me gustan tus funciones.
Saludos.
Muchas gracias Leandro :)
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!!!
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...
Ok, gracias nuevamente está bastante bueno ;)
SaluDOS!!!
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
Sencillamente Karcrack eres digno de admirar!
tus códigos son de lo mejor bro.
;-)