DebugKillProcess (DbgUiDebugActiveProcess) срабатывает только 1 раз. Кто поможет?

Тема в разделе "WASM.WIN32", создана пользователем iramoscow, 12 май 2006.

  1. iramoscow

    iramoscow New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2004
    Сообщения:
    13
    Пробую этот пример. Срабатывает только 1 раз потом DbgUiDebugActiveProcess начинвет выдавать ошибки.

    Кто сталкивался? Я по форуму вижу что такая проблема есть, но как ее решить никто пока не написал.



    Function DebugKillProcess(ProcessId: dword): boolean;

    var

    pHandle: dword;

    myPID: dword;

    HandlesInfo: PSYSTEM_HANDLE_INFORMATION_EX;

    r: dword;

    begin

    Result := false;

    myPID := GetCurrentProcessId();

    if not EnableDebugPrivilege() then Exit;

    //Подключаемся к системе отладки.

    if DbgUiConnectToDbg() <> STATUS_SUCCESS then Exit;

    pHandle := OpenProcessEx(ProcessId);

    //Включаем отладку процесса

    if DbgUiDebugActiveProcess(pHandle) <> STATUS_SUCCESS then Exit;

    //Надо найти полученый DebugObject

    HandlesInfo := GetInfoTable(SystemHandleInformation);

    if HandlesInfo = nil then Exit;

    for r := 0 to HandlesInfo^.NumberOfHandles do

    if (HandlesInfo^.Information[r].ProcessId = myPID) and

    (HandlesInfo^.Information[r].ObjectTypeNumber = $8) //DebugObject

    then begin

    //Зкрываем DebugObject, что приводит к уничтоженю процесса

    CloseHandle(HandlesInfo^.Information[r].Handle);

    Result := true;

    break;

    end;

    VirtualFree(HandlesInfo, 0, MEM_RELEASE);

    end;
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    iramoscow

    Даже если бы знал этот язык, не стал бы смотреть код! Потому что не красиво оформлен, юзай теги кода!
     
  3. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Может быть надо еще DbgUiStopDebugging вызывать, после убиения?
     
  4. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    Дык код-то не его, а Ms-Rem'а. А посему хрен знает, что там может быть неправильно.
     
  5. iramoscow

    iramoscow New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2004
    Сообщения:
    13
    DbgUiStopDebugging вызываю - результат всё тот же
     
  6. iramoscow

    iramoscow New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2004
    Сообщения:
    13
    EvilsInterrupt

    а по делу можно ?



    Итак 2 новости: одна хорошая и одна плохая.

    На 1 DebugObject можно повесить множество процессов при помощи DbgUiDebugActiveProcess и потом их всех прибить. Плохая: невозможно создать DebugObject после его завершения. Т.е. объект создать можно ZwCreateDebugObject, но вот подключить его нельзя :dntknw:((



    Кто-нибудь по теме сталкивался ?