Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Slek Hacker en 26 Septiembre 2010, 15:03 pm



Título: Problema con AddressOf [Solucionado]
Publicado por: Slek Hacker en 26 Septiembre 2010, 15:03 pm
Buenas,
Necesito hallar la dirección en memoria de una función, y pasarla a otra función. Tenía entendido que con AddressOf esto era posible de la siguiente manera:

Código
  1. Public Function Principal ()
  2. Msgbox "Función principal"
  3. End Function
  4.  
  5. ....
  6.  
  7. OtraFuncion Parametro1, AddressOf Principal

Pero me tira el siguiente error:
Error de compilación:

Uso no válido del operado AddressOf

Gracias de antemano.


Título: Re: Problema con AddressOf
Publicado por: Karcrack en 26 Septiembre 2010, 21:02 pm
Usa un pequeño wrapper para saltarte la limitacion del IDE:
Código
  1. Public Function GetAddr(ByVal lAddr As Long) As Long
  2.    GetAddr = lAddr
  3. End Function
Código:
OtraFuncion Parametro1, GetAddr(AddressOf Principal)


Título: Re: Problema con AddressOf
Publicado por: Slek Hacker en 26 Septiembre 2010, 22:13 pm
Muchas gracias por responder.
Pero ya lo intenté. Me sigue dando error. ¿Puede que sea de mi VB?

Si necesitas pongo lo que llevo de code.

Saludos!


Título: Re: Problema con AddressOf
Publicado por: cobein en 26 Septiembre 2010, 22:20 pm
Donde tenes la funcion a la que haces referencia con el AddressOf?


Título: Re: Problema con AddressOf
Publicado por: Slek Hacker en 26 Septiembre 2010, 22:43 pm
En un Form.

Código
  1. Public Function SMain()
  2. MsgBox "Hola :)"
  3. End Function

Y después, en el Form_Load

Código
  1. Inyectar ProcessHandle, GetAddr(AddressOf SMain)

Y las funciones:

Código
  1. Public Function GetAddr(ByVal lAddr As Long) As Long
  2.   GetAddr = lAddr
  3. End Function
  4.  
  5. Private Function Inyectar(ProcessHandle As Long, ByVal EntryPoint As Long)
  6. Dim Module As Long, NewModule As Long
  7.  
  8. Module = GetModuleHandleA(vbNullString)
  9. VirtualFreeEx ProcessHandle, Module, 0, MEM_RELEASE
  10. End Function

El code no está terminado.

Saludos!

P.D: Muchas gracias por su tiempo.


Título: Re: Problema con AddressOf
Publicado por: BlackZeroX en 26 Septiembre 2010, 22:58 pm
.
cuales son los parametros?... si es un proceso tuyo seria mejor que pusieras el codigo, si es una API mensiona cual es..., que no se te peude ayudar mucho de esta forma.



Pon el proceso con el que haces referencia "AddressOf ()" en un Modulo tipo Bas... y ponlo de forma PUBLIC

Código
  1.  
  2. Private Sub Form_Load()
  3. Inyectar &H0, GetAddr(AddressOf SMain)
  4. End Sub
  5. Public Function GetAddr(ByVal lAddr As Long) As Long
  6.   GetAddr = lAddr
  7. End Function
  8. Private Function Inyectar(ProcessHandle As Long, ByVal EntryPoint As Long)
  9. End Function
  10.  
  11.  

en un modulo (BAS)

Código
  1.  
  2. Public Function SMain()
  3.  
  4. End Function
  5.  
  6.  

Dulces Lunas!¡


Título: Re: Problema con AddressOf Solucionado
Publicado por: Slek Hacker en 26 Septiembre 2010, 23:05 pm
Eso es, eso es!!!!
Tenía que ponerlo en un Módulo BAS!!!!

Mil gracias!!

Saludos!!