• Jueves 28 de Marzo de 2024, 20:48

Autor Tema:  hook en una ventana (explorador de windows)  (Leído 3728 veces)

mayel2002

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
hook en una ventana (explorador de windows)
« en: Miércoles 29 de Abril de 2009, 06:25 »
0
Hola a todos, es mi primera vez que entro a este foro y está muy bien, bueno pues tengo una duda que no se cómo resolver ya anduve por toda la red y no encuentro nada al respecto :( , bueno al grano, lo que quiero hacer es un hook en ensamblador para Windows que ganche el explorador de Windows y me diga los archivos que hay en esa ventana ya sea .exe .bat .txt etc.. y si entra a otra ventana igual.
Que es lo que necesito la clase de la ventana o qué?  :brickwall:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #1 en: Miércoles 29 de Abril de 2009, 08:13 »
0
No se que queres hacer exactamente; pero podes buscar informacion sobre:

SetWindowsHookEx
Windows Shell Namespace Extensions
Subclassing
etc.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

mayel2002

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #2 en: Miércoles 29 de Abril de 2009, 08:37 »
0
Lo que quiero hacer exactamente es que cuando un usuario abra una ventana por ejemplo  
c:mis _documentos  en esa ventana estén archivos exe txt etc.., que el propio hook detecte estos archivos, bueno más o menos como lo hacen los antivirus  que cundo abres una ventana(explorador) que tiene un virus el antivirus lo detecta, supongo que por medio de hooks.
Supongo que    invoke SetWindowsHookEx,WH_SHELL,addr ventanas,hInstance,NULL
Este parámetro “WH_SHELL” es el que busca en ventanas?.
PD: ya se como manejar un hook por medio de DLL para el MOUSE pero no para ventanas :(

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #3 en: Miércoles 29 de Abril de 2009, 09:13 »
0
No, un antivirus tiene un modulo de modo Kernel (llamados comunmente drivers y escritos en C/C++) de tipo filtro del file system, no necesita ningun hook para interceptar el intento da apertura o ejecucion de un archivo.

Busca en la MSDN pero no creo que WM_SHELL te sirva exactamente para lo que buscas, una extension para el Explorer es probable que si pero claro son objetos COM ... tal vez quieras hacer un hook de codigo (tipo Detour) sobre las funciones de archivos tipo CreateFile* o ZwCreateFile/ZwOpenFile ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

mayel2002

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #4 en: Miércoles 29 de Abril de 2009, 23:28 »
0
Bueno gracias por la ayuda, entonces esto quiere decir para hacer lo que quiero necesito aprende a programar drivers en c o c++ tal como leí un una entrada que el titulo es programación de drivers,  pues si no hay de otra voy a tener que empezar a programar drivers.
Bueno un hook no puede sacar la ruta de la ventana abierta?
Y si no se puede pues de antemano muchas gracias y a empezar a programar drivers.  :D

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #5 en: Miércoles 29 de Abril de 2009, 23:43 »
0
Todo dependera de COMO lo quieras hacer; como poder me imagino que hasta lo podes hacer sin hooks usando EnumWindows o FindWindow/Ex ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

mayel2002

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #6 en: Jueves 30 de Abril de 2009, 08:57 »
0
Bueno ya llevo un poco de avance gracias por guiarme, tengo una pregunta más puedo sacar la ruta de la carpeta que este abierta, mediante un handle o nombre de la clase?.
Y se se puede cuales son las api para hacerlo?
Como seria FindFirstFile y FindNextFile pero creo que con estas no se puede porque primero deberías llenar la estructura WIN32_FIND_DATA con FindFirstFile y debes de pasarle la ruta de la carpeta para que llene dicha estructura y luego llamar FindNextFile pero así no es posible. :brickwall:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #7 en: Jueves 30 de Abril de 2009, 09:17 »
0
La clase es esta: CabinetWClass, buscala en Google. En el Visual Studio viene un programita llamado Spy++ podes usarlo para ir viendo las ventanas ...

FindFirstFile y FindNextFile las podes usar una vez que obtengas la ruta para obtener los archivos y directorios que contiene.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

mayel2002

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #8 en: Viernes 1 de Mayo de 2009, 04:55 »
0
Se me ocurrió otra cosa a ver si se puede hacer, haber,  si el nombre de la clase de una ventana es CabinetWClass, pero cuando paso el puntero de ratón (con hook) donde están los ítems(archivos) de la carpeta abierta  me parece que la clase es SysListView32 junto con su handle, en vez de pasa   CabinetWClass puedo pasarle mejor SysListView32 para encontrar la ruta de esos archivos  ya sea con sendmessage.

mayel2002

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #9 en: Martes 12 de Mayo de 2009, 23:18 »
0
Ya me adentre más en el tema pero pues me falta algo, bueno lo que hago es sacar el handle de SysListView32 luego  hago esto:
invoke GetWindowThreadProcessId,handle,pid
mov tid,eax
invoke OpenProcess ,PROCESS_ALL_ACCESS , FALSE, tid
Para que me de acceso al proceso, sale eax=0 en Olly.
No tendrá permisos de lectura?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: hook en una ventana (explorador de windows)
« Respuesta #10 en: Miércoles 13 de Mayo de 2009, 00:06 »
0
Estas pasando el tid y no el pid.

Igual siempre mira la documentacion en la MSDN para ver los valores de retorno y errores:
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.