Autor
|
Tema: Como puedo Unhookear las APis de user32.dll? (Leído 4,055 veces)
|
W0lFy
|
Bueno pos esa es mi duda . Un saludo!
|
|
|
En línea
|
K@NuT0
|
|
|
Hendrix
|
Hace tiempo hice un programita en C que hacia esto mismo ( https://foro.elhacker.net/seguridad/hook_detector_by_hendrix-t221586.0.html). El método que usé fue el siguiente: - Analizar todas las API's que usa el proceso (Sacaba la IAT del ejecutable)
- Una vez tenía la IAT, sacaba la dirección en donde empezaba la API (GetProcAddress + GetModuleHandle) y verificara que no hubiera algún salto (Yo usaba el opcode E9, aquí una lista).
- Si había salto, cargaba la libreria que contenía la API (en tu caso, si solo quieres reparar User32.dll solo tendras que cargar esta) y copiaba los 20 primeros bytes de la API (los originales)
- Una vez tenia los primeros 20 bytes originales de la API, los pegaba directamente sobre la dirección de memoria hookeada, con los que se reparaba el Hook (ya que sobreescribía el salto que había por los opcodes originales de la API).
Este método solo funciona si el primer opcode de la instrucción es un salto, en otros casos no funcionaría. Ahora te toca a ti codear esto Un Saludo
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Hendrix, no seria mas efectivo comparar los primeros 20bytes del API supuestamente hookeada directamente? Envez de buscar un salto? Ya que hay mas formas de saltar que con un JMP absoluto...
Si no me equivoco Steve (de HackHound) hizo un codigo que hacia esto en C, comparaba los primenos n Bytes en memoria del API con los mismo bytes que tenia el API en el disco duro... (recorriendo la EAT, etc...)
|
|
|
En línea
|
|
|
|
ntaryl
Desconectado
Mensajes: 95
|
Happy new year Sandsprite have a nice tool Hook explorer u will see interesting code
|
|
|
En línea
|
|
|
|
Hendrix
|
Hendrix, no seria mas efectivo comparar los primeros 20bytes del API supuestamente hookeada directamente? Envez de buscar un salto? Ya que hay mas formas de saltar que con un JMP absoluto...
Si no me equivoco Steve (de HackHound) hizo un codigo que hacia esto en C, comparaba los primenos n Bytes en memoria del API con los mismo bytes que tenia el API en el disco duro... (recorriendo la EAT, etc...)
Bueno, yo lo hacia así, hay algunas apis que por defecto tienen un salto en su primer opcode y mi programa lo detectaba como hook, pero al repararlo quedaba igual, pero bueno... Un Saludo
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
|
Hendrix
|
Lo que no se es si esto funciona con apis hookeadas desde un driver , me podrias contestar eso Hendrix ?
Salu2
Gracias
El modo de Hooking es diferente, ya que mi aplicación repara una modificación del código de la API del proceso, en modo kernel, lo que se hookea es la SSDT. Pero bueno, si se hookea alguna función de algún otro driver o alguna IOCTL si se funcionaria este mismo método para reparar la modificación. Un Saludo
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
W0lFy
|
muy bueno probare... ya posteare con lo ocurrido.. Mil Gracias!
|
|
|
En línea
|
K@NuT0
|
|
|
|
|