[Ayuda] Hooking kernel Mode

Iniciado por Miseryk, 16 Septiembre 2010, 23:30 PM

0 Miembros y 2 Visitantes están viendo este tema.

Miseryk

Hola, me gustaría saber si me podrían aconsejar con el tema que voy a plantear.
Estaba intentando hacer hooking y lo pude hacer, ya sea inyectando DLL o cambiando una funcion por otra, esto es modo usuario. Lo intenté con el MessageBoxA  y funcionó en los procesos que cambiaba el codigo (inyectados), pero averigué que tenía que hacer en modo kernel para que sea general. He estado buscando informacion pero no pude solucionar mi problema, en sí, es hookear un API como por ejemplo MessageBoxA en el SO, si pudieran ayudarme sería de gran ayuda.





Desde ya muchas gracias.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

bizco

#1
si no me confundo MessageBox no tiene directamente una funcion asociada especificamente en modo kernel, explica mas que quieres hacer y que funciones.

PD: y creo que el foro de vb no es el correcto.

Miseryk

A lo que me refiero es que escuché formas de hookear un API para todos los procesos, osea hookear la API en sí.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

bizco

si, pero te repito MessageBox concretamente dudo que tenga su correspondiente en modo kernel (desconozco si es asi o no, pero lo dudo bastante) por eso mejor seria especificaras que intentas hacer. puedes hookear del mismo modo que en modo usuario con el tipico jmp o si estan dentro de la ssdt cambiando el valor de la funcion por el de tu funcion.

puedes leer esto y de ahi ya buscar tu la informacion que necesites:

http://uninformed.org/index.cgi?v=8&a=2&p=10

BlackZeroX

#4
Cita de: Miseryk en 17 Septiembre 2010, 01:47 AM
A lo que me refiero es que escuché formas de hookear un API para todos los procesos, osea hookear la API en sí.

son tres ejemplos


Dulces Lunas!¡.
The Dark Shadow is my passion.

Miseryk

#5
Primero de todo estuve viendo los ejemplos, me gusto mucho como disvirtuó esa persona :D fue lindo para detener el momento de tanto buscar :D:D:D, lo que yo quiero es tipo un programa que intercepte el OpenProcess, WriteMemory, ReadMemory y esos API con los que se pueden modificar los programas, pero no quiero inyectar proceso por proceso, eso ya lo hice, quiero algo más genérico, que inyectando en un lugar sólo quede guardado, por ejemplo tengo un programa que oculta procesos, y hasta que no reinicie la pc todos los procesos que se llaman de tal manera no aparecen en los procesos, ya sea con tasklist, enumprocess, etc, algo así quiero, pero con cualquier otra API :). Desde ya muchas gracias.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

Miseryk

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

bizco

#7
no te obliga a escribir en asm, pero seria bueno que lo entendieses. y si, hablando de modo kernel tienes las opciones que te digo, jmp tipico para las que no esten en la ssdt y el cambio de direccion para las que si estan.

Y espero que no quieras hacerlo en vb.

Miseryk

Cita de: ctlon en 17 Septiembre 2010, 04:07 AM
no te obliga a escribir en asm, pero seria bueno que lo entendieses. y si, hablando de modo kernel tienes las opciones que te digo, jmp tipico para las que no esten en la ssdt y el cambio de direccion para las que si estan.

Y ¿cómo sería un ejemplo simple del MessageBox que lo "inyecté"? y desde cualquier programa que haga la llamada MessageBox muestre la función que le pasé.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

bizco

como ya te he dicho, dudo que exista la equivalente a MessageBox. de todos modos ya te he dicho, puedes hacer el tipico jmp que tu ya has hecho en modo usuario y aplicarlo de igual forma o leer sobre la otra forma que es mas sencillo.