comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Modo Kernel] UnAttachDriver

  • 0 Respuestas
  • 1647 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Junio 17, 2013, 08:45:37 am »
Con esto se quita de la pila de objetos a un driver. Solo quedaría cerrar cualquier hilo  y handel relacionado con el para poder descargarlo con casi total seguridad. 8) 8) 8)
Código: ASM
  1.     UnAttachDriver proc pDriverObject:PDRIVER_OBJECT
  2.     LOCAL CurrentIrql
  3.      
  4.     push esi
  5.     push ecx
  6.     push edx
  7.     push ebx
  8.      
  9.     cli
  10.     call KeRaiseIrqlToDpcLevel;Canbio la prioridad para que nada me detenga a medio y se produzca una BSOD
  11.     mov CurrentIrql,eax
  12.      
  13.     xor eax,eax
  14.     mov ebx,pDriverObject
  15.     mov ebx,[ebx+4]
  16.      
  17.      
  18.      
  19.     NextDevice:
  20.     cmp ebx,eax;Compruebo que tengo una direccion valida de un DeviceObject
  21.     je EndDevice
  22.     ;Posicion actual
  23.     ;Uno de los DeviceObject a desconectar
  24.     mov edx,[ebx+10h]
  25.     mov [ebx+10h],eax
  26.     mov ecx,[ebx+0B0h]
  27.     cmp ecx,eax
  28.     je Next
  29.     ;Posicion actual
  30.     ;DEVOBJ_EXTENSION del DeviceObject a desconectar
  31.     mov esi,[ecx+18h];Consigo la direccion del DeviceObject Inferior de la pila de dispositivos
  32.     mov [ecx+18h],eax;EAX = NULL
  33.     cmp eax,esi
  34.     je Next
  35.     ;Posicion actual
  36.     ;DeviceObject inferior
  37.     mov [esi+10h],edx;Coloco la direccion del DeviceObject Superior de la pila de dispositivos
  38.     cmp eax,edx
  39.     je Next
  40.     ;Posicion actual
  41.     ;DeviceObject superior
  42.     mov ecx,[edx+0B0h];Consigo la direccion de DEVOBJ_EXTENSION del DeviceObject Superior
  43.     mov [ecx+18h],esi;Coloco la direccion del DeviceObject Inferior de la pila de dispositivos
  44.      
  45.     DecStackSize:
  46.     dec byte ptr[edx+30];Disminullo el contador de la StackSize
  47.     mov edx,[edx+10h]
  48.     cmp edx,eax
  49.     jne DecStackSize
  50.      
  51.     Next:
  52.     mov ebx,[ebx+0Ch];Paso al siguiente de la lista
  53.     jmp NextDevice
  54.     EndDevice:
  55.     push CurrentIrql
  56.     call KeLowerIrql ;Vuelvo al nivel normal de prioridad
  57.     sti
  58.     xor eax,eax
  59.      
  60.     pop ebx
  61.     pop edx
  62.     pop ecx
  63.     pop esi
  64.      
  65.      
  66.     ret
  67.      
  68.     UnAttachDriver endp
  69.      
  70.  
« Última modificación: Junio 18, 2013, 12:22:34 am por Expermicid »

 

¿Te gustó el post? COMPARTILO!



[Modo Kernel] GetPointerObjet

Iniciado por Arkangel

Respuestas: 0
Vistas: 1712
Último mensaje Junio 17, 2013, 08:43:06 am
por Arkangel