Terminar Proceso usando funciones NTAPI

Iniciado por dapz, 21 Agosto 2017, 20:44 PM

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

dapz

Usando NtOpenProcess para conseguir el handle del proceso NtTerminateProcess para acabarlo

Código (cpp) [Seleccionar]
#include <Windows.h>
#include <winternl.h>
#include <stdio.h>


#pragma comment(lib, "ntdll.lib")

typedef struct _CLIENT_ID
{
     PVOID UniqueProcess;
     PVOID UniqueThread;
} CLIENT_ID, *PCLIENT_ID;

EXTERN_C NTSTATUS NTAPI NtOpenProcess(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PCLIENT_ID);
EXTERN_C NTSTATUS NTAPI NtTerminateProcess(HANDLE, NTSTATUS);

void main() {
OBJECT_ATTRIBUTES oa;
HANDLE hProc;
ULONG pid;
CLIENT_ID cid;


printf("\n introduce pid-> ");
scanf("%ld", &pid);
cid.UniqueProcess = (HANDLE)pid;
cid.UniqueThread = 0;
InitializeObjectAttributes(&oa, NULL, 0, NULL, NULL);
if(NT_SUCCESS(NtOpenProcess(&hProc, PROCESS_TERMINATE, &oa, &cid))) {
NTSTATUS status = NtTerminateProcess(hProc, 1);
if(NT_SUCCESS(status)) {
MessageBoxW(0, TEXT("proceso terminado"), TEXT("test"), MB_ICONINFORMATION);
}
}
NtClose(hProc);




}
C/C++ ASM

Yuki

Muy interesante, supongo que como trabaja con ntdll debe ser más rápido que usar OpenProcess de Kernel32, para un servidor de rat de otro foro use varias funciones de NT para administrar los procesos (suspender, resumir, destruir, etc), como siempre una librería muy interesante.

Gracias por mostrarlo!

josue9243

Kernel32 envía algunas funciones a NtDll, ejemplo CreateThread, termina en RtlCreateRemoteThread. (Serian como Acceso Directos, o funciones que ahorran parametros)

Paso por mínimo 4 funciones iguales creo.