Critical Process.

Iniciado por APOKLIPTICO, 20 Diciembre 2009, 18:02 PM

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

APOKLIPTICO

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 todo el tiempo, se te caga el kernel de nada (Comprobado en una VM).
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Karcrack

#1
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 (vb) [Seleccionar]
Option Explicit

'Based ON:http://hackhound.org/forum/index.php?topic=10953.0
'PoC By Karcrack

'KERNEL32
Private Declare Function OpenProcess Lib "KERNEL32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Const PROCESS_ALL_ACCESS                As Long = (&HF0000 Or &H100000 Or &HFFF)

'NTDLL
Private Declare Function ZwSetInformationProcess Lib "NTDLL" (ByVal hProcess As Long, ByRef ProcessInformationClass As Any, ByRef ProcessInformation As Long, ByVal ProcessInformationLenght As Long) As Long
Private Declare Function RtlAdjustPrivilege Lib "NTDLL" (ByVal Privilege As Long, ByVal bEnablePrivilege As Long, ByVal bCurrentThread As Long, ByRef OldState As Long) As Long
Private Const ProcessBreakOnTermination         As Long = 29&
Private Const SeDebugPrivilege                  As Long = 20&

Public Sub DesCriticaliza(ByVal lPID As Long)
    Dim dwNull          As Long
    If RtlAdjustPrivilege(SeDebugPrivilege, True, 0&, dwNull) = 0 Then
        Call ZwSetInformationProcess(OpenProcess(PROCESS_ALL_ACCESS, ByVal 0&, lPID), ByVal ProcessBreakOnTermination, 0&, &H4)
    End If
End Sub

No puedo probarlo, no me apetece que me salga ahora un BSOD :xD, pero debe ir....

APOKLIPTICO

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.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Karcrack

Cita de: 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.
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:
http://foro.elhacker.net/empty-t237867.0.html

APOKLIPTICO

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...-
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.