Парни помогите с вычислением адреса в ntoskrnl.exe

Тема в разделе "WASM.NT.KERNEL", создана пользователем tonyman, 23 июл 2008.

  1. tonyman

    tonyman New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    7
    Есть инфа полученная из дебаг символов (кстати кто то может посоветовать нормальный вытягиватель структур, тот что есть сейчас фоллит :dntknw: слегка и необходимо править ручками ):

    Вот строчка из экстракченых символов ВИН ХП

    // pubsym <rva 0xa4703> <code> _PspTerminateThreadByPointer@8

    Так вот - как вычислить это смещение в уже загруженном модуле ??? то есть найти адрес начала этой функции в памяти по смещению ?
    804d7
    В ехе файле в секциях показывает что это секция PAGE,

    То что я вижу в софтайсе - ntoskrnl.exe модуль загружен по адресу :

    804d7000

    при этом секция page находится по адресу 80563780,

    Правильный адрес функции в памяти: 8062d81a,


    Так вот - скажите как можно конечный адрес в памяти получить используя РВА - указанное выше?

    И еще один вопрос к зубрам: насколько данный метод хорош для нахождения неэкспортируемых функций ?
     
  2. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    virtual address = ntos_base + rva
    пример:

    va_pubsym = 0x804d7000 + 0xa4703
     
  3. tonyman

    tonyman New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    7
    Спасибо за ответ,

    но почему то на реальной винде адрес слегка другой :dntknw:

    0x804d7000 + 0xa4703 = 8057B703

    а на самом деле 8062d81a - может кто то его переместил .... ?

    RVA отсчитывается от начала модуля или секции ?
     
  4. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    итак,
    ntoskrnl.exe - 5.1.2600.2180

    pdbdump:

    pubsym <rva 0xa74c5> <code> _PspTerminateThreadByPointer@8

    рабочая винда:

    Kernel base = 0x804d7000
    db PspTerminateThreadByPointer

    8057e4c5 8b ff 55 8b ec 83 ec 0c-83 4d f8 ff 56 57 8b 7d

    va = 8057e4c5, rva = 8057e4c5 - 804d7000 = 0xa74c5

    !!! rva = a74c5 == pubsym_rva

    Проверь, совпадают ли версии ядер!
     
  5. tonyman

    tonyman New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    7
    Скажи если многопроцессорная система или многоядерная - то ntoskrnlpa будет загружаться ?
     
  6. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    Да, будет.. Вообще, это легко проверить.. в свойсвах системы: если есть "Расширение физических", то PAE-ядро используется.
    В Windows XP SP2 (MP и UP) с определенным кол-вом ram PAE включается по умолчанию
     
  7. tonyman

    tonyman New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    7
    Спасибо Огромное - действительно - ошиблись :) с этим дуо коре :)

    Там используется другой модуль - как в ядре получиль какая загружена версия - однопроцессорная или много процессорная ?

    И заодно версии виндоус различать ?
     
  8. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    самый простой метод для определения какое ядро загружено: однопроцессорное или нет - это посмотреть количество процессоров с помощью KeQueryActiveProcessors, но он, понятное дело, не всегда работает.. можно просто определить Internal Name файла загруженного ядра из PE-заголовка от туда же можно узнать и версию!
     
  9. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    nt!KeNumberProcessors - это если нужно именно количество логических процов, а не тип ядра

    nt!NtBuildNumber - версия ядра ;)
     
  10. tonyman

    tonyman New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    7
    NtBuildNumber - для pae & non-pae ядра будет различный ?
     
  11. tonyman

    tonyman New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    7
    Thanks goes 2:

    retmas &
    Zufyxe

    Огромное спасибо за помощь :)
     
  12. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    нет
     
  13. uhahaha

    uhahaha New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    2
    cr4 для того чтобы узнать включен physical address extension или нет.