Autor
|
Tema: Introducción a la programación de drivers en Windows (Leído 81,973 veces)
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Si a alguien le interesa un visor de APIs hookeadas que funcione con win7 es el RootKit Hook analizer.
|
|
« Última modificación: 7 Agosto 2010, 16:07 pm por Distorsion »
|
En línea
|
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Hola, estoy intentando hacer un hook en un driver, cambiando una dirección de los MAJORS, el problema es que cuando lo hago se cuelga el sistema.
No se si es porque no obtengo bien la dirección del MAJOR o por el cambio de dirección del MAJOR o por la función propia que sustituyo con el hook.
Se que con el memoryze puedo ver las direcciones de los drivers y sus MAJORS así ya descartaría la primera posibilidad, pero no funciona con el windows 7.
Alguien sabría algún programa parecido que funcione en windows 7?
Por cierto Virtual pc más windbg y driver cargado con osrloader me peta la VM :S
He visto en codigos cosas parecidas a estas: InterlockedExchangePointer(&Driver->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL],HookDriver);
Seria lo mismo que esto verdad:
Driver->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HookDriver;
Saludos.
|
|
« Última modificación: 17 Agosto 2010, 17:16 pm por Distorsion »
|
En línea
|
|
|
|
Hendrix
|
Hola, estoy intentando hacer un hook en un driver, cambiando una dirección de los MAJORS, el problema es que cuando lo hago se cuelga el sistema.
No se si es porque no obtengo bien la dirección del MAJOR o por el cambio de dirección del MAJOR o por la función propia que sustituyo con el hook.
Se que con el memoryze puedo ver las direcciones de los drivers y sus MAJORS así ya descartaría la primera posibilidad, pero no funciona con el windows 7.
Alguien sabría algún programa parecido que funcione en windows 7?
Por cierto Virtual pc más windbg y driver cargado con osrloader me peta la VM :S
He visto en codigos cosas parecidas a estas: InterlockedExchangePointer(&Driver->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL],HookDriver);
Seria lo mismo que esto verdad:
Driver->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HookDriver;
Saludos.
Aquí hay un texto sobre lo que pides (IRP Hooking): http://www.rootkit.com/newsread.php?newsid=846
|
|
|
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
|
|
|
gil8250
Desconectado
Mensajes: 1
|
hola, estuve leyendo el tuto, por que estoy interesado en hacer un bypass al gameguard, para 9 dragons, ya que el gameguard hace hook al proceso del cliente, y no permite ver la memoria o modificarla , simplemente lo oculta de la lista de procesos, una cosa es unhookear el gameguard, pero el mismo hace chekeos para ver si los hook estan activos, crees que haya un manera de hacerlo y hacerle creer al gameguard que aun estan los hook activos, gracias, agradezco cualquier ayuda
|
|
|
En línea
|
|
|
|
Hendrix
|
hola, estuve leyendo el tuto, por que estoy interesado en hacer un bypass al gameguard, para 9 dragons, ya que el gameguard hace hook al proceso del cliente, y no permite ver la memoria o modificarla , simplemente lo oculta de la lista de procesos, una cosa es unhookear el gameguard, pero el mismo hace chekeos para ver si los hook estan activos, crees que haya un manera de hacerlo y hacerle creer al gameguard que aun estan los hook activos, gracias, agradezco cualquier ayuda Ya comenté en otros posts, que Meek y yo estuvimosintentando parchear el sXe, en modo Kernel y en modo usuario, y al final la solución la encontramos en modo usuario, parcheando algunas funciones del mismo sXe, no se como funciona el GameGuard, pero supongo que se le podrá hacer lo mismo. 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
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Tengo un problemilla con el siguiente codigo, es sencillo pero me da un pantallazo azul PFILE_OBJECT FileObject;
PsReferenceProcessFilePointer(PsGetCurrentProcess(),&FileObject);
PsGetCurrentProcess() me devuelve el resultado correcto y no da problemas pero al usar PsReferenceProcessFilePointer pues pantallazo azul. Saludos.
|
|
|
En línea
|
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Medio solucionado. Ahora solo me peta aveces
|
|
|
En línea
|
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Haber si alguien sabe echarme una mano. Intento obtener la ruta del archivo desde un PFILE_OBJECT, entonces si hago esto: if (IoQueryFileDosDeviceName(FileObject,&wcFilePath)==STATUS_SUCCESS) DbgPrint("Ruta archivo: %s .\n",wcFilePath->Name.Buffer);
Si hago esto funciona bien pero de vez en cuando me da un pantallazo azul muy bonito el IoQueryFileDosDeviceName(FileObject,&wcFilePath). Así que intento evitar esta API y hago lo siguiente: DbgPrint("Ruta archivo: %s .\n",FileObject->FileName.Buffer);
Y cual es mi sorpresa? Que solo imprime una barra Haber si alguien me ayuda. Gracias.
|
|
|
En línea
|
|
|
|
bizco
Desconectado
Mensajes: 698
|
pq es unicode, cambia el %s.
|
|
|
En línea
|
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Ya lo he probado con el %ws y el 'L' delante de todo y sale lo mismo
|
|
|
En línea
|
|
|
|
|
|