Вот так я делаю, но нечего не пройсходит Код (Text): DrTerminateProcess proc pid:DWORD LOCAL oa :OBJECT_ATTRIBUTES LOCAL cid :CLIENT_ID InitializeObjectAttributes addr oa, NULL, OBJ_CASE_INSENSITIVE, NULL, NULL push pid pop hProcess mov cid.UniqueProcess,0 invoke ZwOpenProcess, addr hProcess, 2035711, addr oa, addr cid push eax pop hProcess invoke ZwTerminateProcess, hProcess, 0 ret DrTerminateProcess endp
Что такое mov cid.UniqueProcess,0 ?!?!?! Здесь должен быть PID процесса ЗЫ. Перед тем как кодить, нужно функции смотреть. NTSYSAPI NTSTATUS NTAPI NtOpenProcess( OUT PHANDLE ProcessHandle, IN ACCESS_MASK AccessMask, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PCLIENT_ID ClientId );
Rihter Уж нет ... я тебе сказал что не так ... думай сам, или ищи в гугле. Это не потому что я злой или еще что-то, а потому что ты сам нифига не делаешь, а только просишь сурсы. Может тогда ты посмотришь на описуху ... ЗЫ. Как я понял ф-ция не твоя
MegaZu Что жалко? Помочь? Знал бы, я бы не спрашивал бы, я только начинаю. Вот так правельно? DrTerminateProcess proc pidWORD LOCAL oa :OBJECT_ATTRIBUTES LOCAL cid :CLIENT_ID InitializeObjectAttributes addr oa, NULL, OBJ_CASE_INSENSITIVE, NULL, NULL push pid pop edx mov cid.UniqueProcess, edx invoke ZwOpenProcess, addr hProcess, PROCESS_ALL_ACCESS, addr oa, addr cid .if (eax==STATUS_SUCCESS) invoke ZwTerminateProcess, hProcess, 0 .endif ret DrTerminateProcess endp Если да. То она не работает Да не моя... Все, как и я пользуются тем что другие списали, у других. А с самого начало это Microsoft
OlegA11 Если сравнить с API ф-ями все должно пройти на ура а здесь я даже без силен Вот откопал из исходнико "ntoskrnl.c" Код (Text): [i] NTSTATUS STDCALL [b]NtTerminateProcess[/b](IN HANDLE ProcessHandle OPTIONAL, IN NTSTATUS ExitStatus) { NTSTATUS Status; PEPROCESS Process; PETHREAD CurrentThread; BOOLEAN KillByHandle; PAGED_CODE(); KillByHandle = (ProcessHandle != NULL); Status = ObReferenceObjectByHandle((KillByHandle ? ProcessHandle : NtCurrentProcess()), PROCESS_TERMINATE, PsProcessType, KeGetPreviousMode(), (PVOID*)&Process, NULL); if (!NT_SUCCESS(Status)) { return(Status); } CurrentThread = PsGetCurrentThread(); PsLockProcess(Process, FALSE); if(Process->ExitTime.QuadPart != 0) { PsUnlockProcess(Process); ObDereferenceObject(Process); return STATUS_PROCESS_IS_TERMINATING; } PspTerminateProcessThreads(Process, ExitStatus); if (KillByHandle) { KeQuerySystemTime(&Process->ExitTime); Process->ExitStatus = ExitStatus; if (CurrentThread->ThreadsProcess == Process) { CurrentThread->Terminated = TRUE; PsUnlockProcess(Process); ObDereferenceObject(Process); PspExitThread(ExitStatus); KEBUGCHECK(0); } } PsUnlockProcess(Process); ObDereferenceObject(Process); return(STATUS_SUCCESS); } VOID STDCALL [b]PspDeleteProcess[/b](PVOID ObjectBody) { PEPROCESS Process = (PEPROCESS)ObjectBody; ExAcquireFastMutex(&PspActiveProcessMutex); RemoveEntryList(&Process->ActiveProcessLinks); ExReleaseFastMutex(&PspActiveProcessMutex); if(Process->UniqueProcessId) { ExDestroyHandle(PspCidTable, Process->UniqueProcessId); } KDB_DELETEPROCESS_HOOK(Process); SeDeassignPrimaryToken(Process); MmReleaseMmInfo(Process); if(Process->Win32Process != NULL) ExFreePool(Process->Win32Process); }[/i] Меня зайнтересовало, вторая ф-ция Она действительно, уничтожает процесс со всеми её данными?