Узнать базу ядра

Тема в разделе "WASM.X64", создана пользователем OpticalToxin, 9 сен 2010.

  1. OpticalToxin

    OpticalToxin New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    14
    Адрес:
    Russia
    Как в x64 венде узнать базу ядра?
     
  2. OpticalToxin

    OpticalToxin New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    14
    Адрес:
    Russia
    Зделал так:

    ;Get the handler of an interrupt
    sidt tbyte [rbp+strcDriverData.pntrIDTR]
    mov rax,qword [rbp+strcDriverData.pntrIDTR+2] ;rax points to IDT
    lea rax,[rax+8*10h] ;rax points to the trap gate
    mov rbx,[rax] ;[0..15]
    shrd rsi,rbx,16
    mov rbx,[rax+6] ;[16..31]
    shrd rsi,rbx,16
    mov rbx,[rax+8] ;[32..63]
    shrd rsi,rbx,32

    ;Search the beginning of the kernel
    and rsi,0fffffffffffff000h
    ServGetAddress_0: sub rsi,1000h
    cmp word [rsi],'MZ'
    jne ServGetAddress_0
    ;Check up for: 'PE' header
    mov edx,[rsi+3ch]
    cmp word [rsi+rdx],'PE'
    jne ServGetAddress_0 ;Continue the searching

    протестил: XP, 7
     
  3. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    А нельзя с помощью ZwQuerySystemInformation? В x64 она точно есть.
     
  4. OpticalToxin

    OpticalToxin New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    14
    Адрес:
    Russia
    я ищу базу чтобы найти адреса функций
     
  5. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Посмотри в сторону KeCapturePersistentThreadState().
    Более подробно об этой функции есть, например, здесь.
     
  6. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    А, блин, так у тебя вообще доступа к API ядра нет, что ли?
     
  7. OpticalToxin

    OpticalToxin New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    14
    Адрес:
    Russia
    да
     
  8. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    OpticalToxin
    А что есть тогда? Доступ к PCR есть хотя бы?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    x64
    Стандартная задача. Начинаем исполняться с CPL = 0. Остальное всё нужно найти, базу ядра, распарсить его, найти переменные/функи.. К PCR доступ есть.
     
  10. OpticalToxin

    OpticalToxin New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    14
    Адрес:
    Russia
    делал сначала через PCR потом решил через IDTR - нет возни со структурами
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    OpticalToxin
    Лучше через механизм исключений - надёжно.
     
  12. OpticalToxin

    OpticalToxin New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    14
    Адрес:
    Russia
    а есть примеры перехвата DoubleFault?
    через IDTR - аппаратно, а исключения зависит от ОС (к примеру: в usermode в XP финальный обработчик в kernel32 указывает, а в Viste в ntdll, вроде)
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    OpticalToxin
    Есть примеры перехвата не критичных исключений(не приводящих к генерации багчека). Есть возможность перехватить багчеки, но это закрытая тема, это основа моего руткита ;)