Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: APOKLIPTICO en 20 Diciembre 2009, 18:02 pm



Título: Critical Process.
Publicado por: APOKLIPTICO en 20 Diciembre 2009, 18:02 pm
Hola! Como va todo?
Bueno, miren tengo un tema...
Como hago para que un programa que tiene el RtlProcessIsCrital token activado no me haga un BSOD si lo quiero apagar sino q me diga como muchos de los critical processes de windows "Este proceso es critico para el sistema y no se puede terminar".
Hay alguna manera? (Sin usar drivers para hookear el exitprocess).

Un abrazo
APOKLIPTICO

PD: Es peligroso q ande haciendo guru meditation (http://es.wikipedia.org/wiki/Guru_Meditation) todo el tiempo, se te caga el kernel de nada (Comprobado en una VM).


Título: Re: Critical Process.
Publicado por: Karcrack en 20 Diciembre 2009, 18:58 pm
Y no es mas sencillo que deje de ser critico?
Se puede hacer, creo que haria falta inyectar code, a ver si tengo un rato y te hago un PoC, sino te pongo un code para que te hagas idea :-* ;)
Código
  1. Option Explicit
  2.  
  3. 'Based ON:http://hackhound.org/forum/index.php?topic=10953.0
  4. 'PoC By Karcrack
  5.  
  6. 'KERNEL32
  7. Private Declare Function OpenProcess Lib "KERNEL32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  8. Private Const PROCESS_ALL_ACCESS                As Long = (&HF0000 Or &H100000 Or &HFFF)
  9.  
  10. 'NTDLL
  11. Private Declare Function ZwSetInformationProcess Lib "NTDLL" (ByVal hProcess As Long, ByRef ProcessInformationClass As Any, ByRef ProcessInformation As Long, ByVal ProcessInformationLenght As Long) As Long
  12. Private Declare Function RtlAdjustPrivilege Lib "NTDLL" (ByVal Privilege As Long, ByVal bEnablePrivilege As Long, ByVal bCurrentThread As Long, ByRef OldState As Long) As Long
  13. Private Const ProcessBreakOnTermination         As Long = 29&
  14. Private Const SeDebugPrivilege                  As Long = 20&
  15.  
  16. Public Sub DesCriticaliza(ByVal lPID As Long)
  17.    Dim dwNull          As Long
  18.    If RtlAdjustPrivilege(SeDebugPrivilege, True, 0&, dwNull) = 0 Then
  19.        Call ZwSetInformationProcess(OpenProcess(PROCESS_ALL_ACCESS, ByVal 0&, lPID), ByVal ProcessBreakOnTermination, 0&, &H4)
  20.    End If
  21. End Sub
No puedo probarlo, no me apetece que me salga ahora un BSOD :xD, pero debe ir....


Título: Re: Critical Process.
Publicado por: APOKLIPTICO en 20 Diciembre 2009, 19:51 pm
El tema es que quiero que sea critico, para que sea unkillable, pero no quiero que me haga guru meditation cada vez q se cierra, quiero q de una advertencia o algo asi.


Título: Re: Critical Process.
Publicado por: Karcrack en 20 Diciembre 2009, 20:17 pm
El tema es que quiero que sea critico, para que sea unkillable, pero no quiero que me haga guru meditation cada vez q se cierra, quiero q de una advertencia o algo asi.
Vale, no entendi :rolleyes:

Pero el Administrador de Tareas no se fija en eso para mostrar la advertencia, solo en el nombre, asi que si renombras tu exe a winlogon.exe ya te advertira...

De cualquier manera, mira el ejemplo de Cobein, el que hookea OpenProcess:
Código:
http://foro.elhacker.net/empty-t237867.0.html


Título: Re: Critical Process.
Publicado por: APOKLIPTICO en 20 Diciembre 2009, 20:23 pm
Buenisimo gracias!
Eso me va a servir para entender como funciona el proceso de hooking de muchos av/fw, asi puedo unhookear las llamadas a las APIs...-