Ring-0, работа с процессами

Тема в разделе "WASM.ASSEMBLER", создана пользователем Pinkbyte, 13 дек 2006.

  1. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Вопросы:
    1) как найти указатель на самую первую структуру EPROCESS(ту, которая указывает на SYSTEM)? ZwQuerySystemInformation и другие API не предлагать... Экспортируемые переменные ядра приветствуются...
    2) Как называются поля структуры EPROCESS, которые являются указателями на предыдующий и следующий эл-т двустороннего списка данных структур?
    3) Сколько и какие параметры берет ф-ция ZwCreateProcess?
    4) Я перехватываю ZwTerminateProcess и на попытки закрыть все процессы делаю
    mov eax,STATUS_ACCESS_DENIED
    ret
    При НОРМАЛЬНОМ(не через taskmgr.exe) закрытии самого процесса происходит ошибка, какой бы я статус не ставил. Вопрос - как разрешить самому процессу закрывать себя?

    Гугл не предлагать... Ибо там был. А если задаю вопросы - значит был, но нифига нужного не достал...
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    сомнительно
     
  3. nermest

    nermest New Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    157
    На эти 2 вопроса ответит тебе Свен Шрайбер. Полистай - оччень полезно.(Shreiber, Undocumented windows 2000). Кстати в Руссиновиче есть ответ на второй вопрос.
    Это уже Гэрри Неббет. Да и вообще говоря, в инете полно, всякого по поводу native api.
    Один из параметров ZwTerminateProcess - handle процесса. Так вот можно по хэндлу получить ID процесса(уникальный для всей системы), а потом запросить ID текущего процесса непосредственно, и сравнить.

    PS. прошу прошения - маленькая поправка... Нсчет второго вопроса я написал что в Руссиновиче модно прочесть. На самом деле, все конечно зависит от хидера, в котором определена структура EPROCESS
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    IoGetCurrentProcess, и иди по Active Processes Links до процесса с pid = 0.
    ActiveProcessLinks
    google. Первая же ссылка по NtCreateProcess содержит прототип.
    проверяй хендл на -1UL.
     
  5. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    1.
    PVOID eprocess;
    ObReferenceObjectByHandle(h_proc,0,0,KernelMode,&eprocess,NULL);
    h_proc - хендл процесса SYSTEM

    4.
    имхо, для этого лучше перехватывать OpenProcess
     
  6. compKiller

    compKiller New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2006
    Сообщения:
    3
    как получить ID по Handle?
     
  7. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    >> как получить ID по Handle?
    Код (Text):
    1. ULONG get_pid_from_eprocess(PEPROCESS eproc)
    2. {
    3.   if (!eproc)
    4.     return 0xFFFFFFFF;
    5.  
    6.   ULONG pid=*(ULONG *)((UCHAR *)eproc+offset_eprocess_pid);
    7.  
    8.   return pid;
    9. }
    10.  
    11. ULONG get_pid_from_process_handle(HANDLE proc)
    12. {
    13.   PVOID obj;
    14.   NTSTATUS status=ObReferenceObjectByHandle(proc,0,0,KernelMode,&obj,NULL);
    15.   if (NT_SUCCESS(status))
    16.   {
    17.     ULONG pid=compat_get_pid_from_eprocess((PEPROCESS)obj);
    18.     ObDereferenceObject(obj);
    19.  
    20.     return pid;
    21.   }
    22.  
    23.   return 0xFFFFFFFF;
    24. }
     
  8. compKiller

    compKiller New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2006
    Сообщения:
    3
    1. чему равно offset_eprocess_pid?

    2. а нельзя ли сделать это(получит id по handle) с помощью ZwQueryInformationProcess?
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Смещение PID в стркутуре EPROCESS, различается для разных ОСей.
    Можно только если открыт с PROCESS_QUERY_INFORMATION.
     
  10. compKiller

    compKiller New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2006
    Сообщения:
    3
    а для XP sp2 какое смещение?