Hola..

De la misma fuente del post anterior...

ZwTerminateProcess Test

Compile it with Meerlat 1.1 (See Kernel-mode section)
Use DbgView to catch informations.

Before beginning your tests, please update "NtoskrnlCustom.dcu":
1- UnRAR "include.rar"
2- Copy and replace "NtoskrnlCustom.dcu" into "\Meerkat_Beta1\include\" folder.

Código: Seleccionar todo

unit ZwTerminateProcessTest;

interface

uses
  nt_status,
  ntoskrnl,
  NtoskrnlCustom;

function _DriverEntry(
  DriverObject: PDriverObject;
  RegistryPath: PUnicodeString
  ): NTSTATUS; stdcall;

implementation

function OpenProcess(PID: DWORD): Thandle; stdcall;
var
  ProcessHandle: Thandle;
  ClientId: CLIENT_ID;
  ObjectAttributes: OBJECT_ATTRIBUTES;
begin
  ProcessHandle := 0;

  ObjectAttributes.Length := SizeOf(OBJECT_ATTRIBUTES);
  ObjectAttributes.RootDirectory := 0;
  ObjectAttributes.ObjectName := nil;
  ObjectAttributes.Attributes := 0;
  ObjectAttributes.SecurityDescriptor := nil;
  ObjectAttributes.SecurityQualityOfService := nil;

  ClientId.UniqueProcess := PID;
  ClientId.UniqueThread := 0;

  ZwOpenProcess(
    @ProcessHandle,
    $001F0FFF,
    @ObjectAttributes,
    @ClientId
    );

  Result := ProcessHandle;
end;

procedure DoIt;
var hProcess: Thandle;
begin

 [color=#FF0000] // IMPORTANT: "1064" is Process's ID, Change it with your target Process ID.[/color]
  hProcess := OpenProcess(1064);
  if hProcess <> 0 then
  begin
    DbgPrint('OpenProcess: Success -->> Process handle is:0x%X', hProcess);
    if ZwTerminateProcess(hProcess, 0) = 0 then
      DbgPrint('ZwTerminateProcess - Killed')
    else
      DbgPrint('ZwTerminateProcess - Failed');
  end
  else
    DbgPrint('OpenProcess: Failed to get Process handle');

  ZwClose(hProcess);
end;

function _DriverEntry(DriverObject: PDriverObject; RegistryPath: PUnicodeString): NTSTATUS; stdcall;
begin
  DbgPrint('Driver -->> Loaded');
  DoIt;
  DbgPrint('Driver -->> Leaving');
  Result := STATUS_DEVICE_CONFIGURATION_ERROR;
end;
end. 
Delphi project link: [Enlace externo eliminado para invitados]

Espero que os sirva...

Saludos !!
Imagen


Solo lo mejor es suficiente...
hola cln , mi duda es la siguiente una vez creado el archivo sys
tengo que llamarla con la funcion, como a una dll . no tengo muy claro este
tema si pudieras echar algo de luz te lo agradeceria.
estube buscando informacion para estudiarla pero no hay mucho al respecto
(se que es un tema complicado pero no le tengo miedo al pantallazo azul)
gracias.
paresco malo ,pero soy bueno
Los sys se cargan como un servicio, con flag específicas, puedes descargarte el OSR Loader que esta en el foro de OSR (?) o utiliza mi loader de Drivers. Mi loader hace todo automático, cargas el sys, escribes un nombre de servicio y listo. El OSR Loader tienes que registrar el servicio y luego cargarlo...
Si tienes duda de como se carga un driver en este topic el cpodigo del mensajero contiene como se carga un driver, las flags y eso.
UN BSOD no se toma a la ligera, solo si sabes lo que haces no hay por que temer.

Saludos!
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
buenas orlando me estoy embebiendo en este tema
queria pedirte si podes resubir o enviarme por mp el cargador de driver echo por voz (y preguntarte si la complegidad de codigo de este loader es dificil o medio)
en un ejemplo que encontre en la web vi una gui que terminaba un proceso por pid
y contenia una dll y un sys, en este caso se comunican de este modo

gui----->dll----------->sys
¿la dll vendria a ser tu loader?
bueno encontre un tutorial de hendryx, voy a leerlo
y comenzar mis ensayos cualquier otra duda te contacto
saludos orlando9427
paresco malo ,pero soy bueno
Cargador: [Enlace externo eliminado para invitados]
Recuerda ejecutarlo como Admin.

Acerca del ejemplo que encontraste, de cierta manera si; pero, si un gran pero, mi loader solo hace eso cargar, en tu driver tu debes de asignarle un función para recibir datos por medio de los IRP, leete el paper de Hendrix, ahí te explica lo básico. Después puedes ver alguno de mis drivers que están posteados en la zona de C o los de cLn en la zona de Delphi, dependiendo de que lenguaje quieras programarlos, yo recomiendo C debido a que toda la documentación esta en C y es un enredo estar traduciendo. En los drivers puedes ver como se carga y descarga, se envian y reciben instrucciones. Y ya sabes donde estoy ;)

PD: Al fin alguien entra a ring0 :3

Saludos!
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Responder

Volver a “Fuentes”