Определить процесс по cs:eip

Тема в разделе "WASM.NT.KERNEL", создана пользователем DenisKa, 23 мар 2009.

  1. DenisKa

    DenisKa New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2009
    Сообщения:
    3
    Есть cs:eip в обработчике прерывания.
    Как определить какому процессу сs:eip принадлежит?
    Через NtQueryInformationProcess() предполагаю что будет долго поэтому не годится.
    Через двусвязный список EPROCESS???
    Но почему-то EPROCESS->LdtInformation почемуто там ноль в каждом процессе. (WINXP, структуры от сюда http://www.acc.umu.se/~bosse/ntifs.h)
    Помогите пожалуйста, что не так? как узнать дескрипторы процесса?
     
  2. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Обработчик прерывания? Перезагружаешь fs (или ds что там нужно посмотри в отладчике) и делаешь PsGetCurrentProcess(). А по cs:eip какому процессу принадлежит определить невозможно, потому что cs:eip может быть одинаковый в разных процессах.
     
  3. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    DenisKa, а что ты скажешь на то, что твой хук на прерывание не будет работать в х64?
     
  4. DenisKa

    DenisKa New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2009
    Сообщения:
    3
    eip может быть любой но не cs???
     
  5. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    cs может быть разный, если прикладная программа его меняет, но как правило он будет одинаковый. Вопрос не очень понял
     
  6. DenisKa

    DenisKa New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2009
    Сообщения:
    3
    узнал тема закрыта
     
  7. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    поделись [​IMG]