1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| EXTERN_C NTSTATUS NtCreateThreadEx( OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN LPVOID ObjectAttributes OPTIONAL, IN HANDLE ProcessHandle, IN PVOID StartRoutine, IN PVOID Argument OPTIONAL, IN ULONG CreateFlags, IN SIZE_T ZeroBits, IN SIZE_T StackSize, IN SIZE_T MaximumStackSize, IN LPVOID AttributeList OPTIONAL);
EXTERN_C NTSTATUS NtTerminateProcess( HANDLE ProcessHandle, NTSTATUS ExitStatus );
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, true, pid); if (handle) { NTSTATUS status = NtTerminateProcess(handle, 1); cout << GREEN << "Kill:" << pid << " | Result:" << status << WHITE << endl; } else { cout << RED << "GetLastError(" << GetLastError() << ")\n" << WHITE << endl; }
HANDLE hthread = nullptr;
NtCreateThreadEx(&hthread, GENERIC_EXECUTE, nullptr, hproc, ThreadProc, nullptr, FALSE, 0, 0, 0, nullptr);
DWORD WINAPI ThreadProc(LPVOID prarm) { std::cout << "thead id:" << GetCurrentThreadId() << std::endl;
return 0; }
|