Llamar a una funcion

Iniciado por Kizar, 11 Diciembre 2006, 15:35 PM

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

Kizar

Bueno, como supongo que sabeis en las dll se encuentran funciones.
Para llamar a una funcion de una dll en vb hay que declarar la funcion arriba.
Pero si quieres cargar una dll que no has declarado se aria con: LoadLibrary , despues buscariamos en la api la funcion que queramos por el nombre con GetProcAddress.
Pero para llamar a esa funcion que hemos llamado para pasarla los parametros yo uso esta api: CallWindowProc
Y la paso los parametros de la funcion, pero solo permite pasar tres parametros, si necesito pasar mas como lo haria ¿?
Ejemplo:

KeySlot = CallWindowProc(Direcion_funcion, Me.hWnd, parametro1, parametro2, parametro3)

Kizar


Ivanchuk

Yo de vb no se demasiado pero tendrias que poder declarar un puntero a una funcion, cosa que en vb no podes hacer segun tengo entendido. Mirate esta pagina, ahi el autor hizo una dll que exporta una funcion la cual usas para hacer llamadas indirectas, seria el equivalente a un puntero a funcion. Desde ya que me parece que te conviene declararlas en lugar de hacer esto pero bueno.
Por otro lado encontre esto http://www.thevbzone.com/secrets.htm, esta interesante, miralo.
Otro truco que usan es crear un hilo con la dir que obtenes de GetProcAddress, llamando a CreateThread().
CreateThread(), no se como tratara los parametros, cuestion de probarlo, pero es probable que se le puedan pasar varios, o sea todos pero apuntados por una sola variable.
Espero que te sirva, sino bue.. se hace lo que se puede :).
P.D: Es muy bueno el truco de CallWindowProc.
Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org