Много вопросов на счет ядра

Тема в разделе "WASM.NT.KERNEL", создана пользователем SubXor, 9 июл 2010.

  1. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    Начал разибратся с ядром Windows. Есть много вопросов, по ходу дела буду их тут задавать.

    Первый:

    Номер каждого прерывание обрабатывает подпрограмма в ядре, ее адрес находится в IDT? Можно ли как-то написать драйвер, который при загрузке подменит адрес обработчика прерывания допустим, INT 78?

    Часто вижу пишут "Драйвер режима ядра", бывают еще и драйвера ring3?

    Еще вопрос, dll библиотека ntdll.dll есть в адресном простанстве каждого процесса, при регистрации и запуске драйвера в адресном простанстве каждого процесса выше 0x7FFFFFFF тоже по какому то адресу будет загружен мой драйвер и все остальные?

    Где можно почитать про взаимодействие ring3 приложения с своим драйвером?

    Чем отлаживать драйвера? Syser, SoftICE?
     
  2. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    Можно
    Да
     
  3. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    ring3 драйвера, можно пример?

    Нужно править IDT?

    Как узнать начало таблицы диспетчиразации системных вызовов?
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    нафиг, нафиг. WinDbg.

    ну а как еще перехватить прерывание?
    ну можно еще править IDTR.

    да

    да

    ну да, тоже по какому-то адрес будет загружен твой драйвер и остальные. вопрос был да/нет? я просто не врубил.

    в мсдн, IOCTL_DEVICE_CONTROL
     
  5. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    Насчет отладки драйверов с помощью WinDBG есть статьи хорошие?
     
  6. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    help
    http://windbg.info/
    http://www.dumpanalysis.org/
    google
     
  7. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    SubXor
    к нему доки отличные, качай)
    и он стандартно есть в новой WDK
     
  8. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    Мне интересно было бы посмотреть память выше 0x7FFFFFFF только для чтения, так легче можно будет понять некоторые вещи, есть какие то утилиты для этого?
     
  9. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    windbg
     
  10. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    Локально можно отлаживать драйвер или нужно обязательно через виртуальную машину или второй PC?
     
  11. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    есть livekd но удобнее отлаживать виртуальную машину
     
  12. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    VirtualBox не подойдет? а то в мануалах везде говорят о VmWare
     
  13. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    подойдет

    p.s.:
    чат какой-то получается, пользуйтесь гуглом
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    SubXor
    o Послать IPI(KeIpiGenericCall etc.) и локально загрузить дескриптор соответствующий в IDT.
    o KiAbiosGdt[] -> GDT -> KPCR -> IDT.
    o HalpProcessorPCR[] -> KPCR -> IDT.
    -
    Вначале общую архитектуру изучите, потом только драйвера писать.
     
  15. SubXor

    SubXor New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2010
    Сообщения:
    12
    Этим и занимаюсь, можете порекомендовать способы продуктивнее это делать?

    Почему при !idt в livekd выводит адреса только для 10 прирываний?


    Код (Text):
    1. Dumping IDT:
    2.  
    3. 30:     806f4d50 hal!HalpClockInterrupt
    4. 31:     8193615c i8042prt!I8042KeyboardInterruptService (KINTERRUPT 81936120)
    5. 35:     81935044 portcls!CKsShellRequestor::`vector deleting destructor'+0x26 (K
    6. INTERRUPT 81935008)
    7. 38:     806eeef0 hal!HalpProfileInterrupt
    8. 39:     81bdfb44 ACPI!ACPIInterruptServiceRoutine (KINTERRUPT 81bdfb08)
    9.                  *** ERROR: Symbol file could not be found.  Defaulted to export
    10.  symbols for VBoxGuest.sys -
    11. VBoxGuest+0xB00 (KINTERRUPT 81b932e0)
    12. 3a:     81965044 USBPORT!USBPORT_InterruptService (KINTERRUPT 81965008)
    13.                  NDIS!ndisMIsr (KINTERRUPT 81912008)
    14. 3b:     818eb044 USBPORT!USBPORT_InterruptService (KINTERRUPT 818eb008)
    15.                  VIDEOPRT!pVideoPortInterrupt (KINTERRUPT 81948120)
    16. 3c:     8194e044 i8042prt!I8042MouseInterruptService (KINTERRUPT 8194e008)
    17. 3e:     81bcf7e4 atapi!IdePortInterrupt (KINTERRUPT 81bcf7a8)
    18. 3f:     81bd7cc4 atapi!IdePortInterrupt (KINTERRUPT 81bd7c88)
    Мне например интересно увидеть код обработчика, третьего прирывания.
     
  16. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    rtfm
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    SubXor
    Начните хотя бы, с этого :
    Драйверы режима ядра by Four-F