Как вытащить имя и адрес переменной из РЕ?!

Тема в разделе "WASM.RESEARCH", создана пользователем NeuronViking, 3 май 2009.

  1. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    Например как получить программно адрес ntoskrnl.exe:KiBugCheckDriver?
    Вот что говорит о KiBugCheckDriver dumpbin на ntoskrnl.exe:
    ..
    96C HIGHLOW 00483BA0 _KiBugCheckDriver
    D22 HIGHLOW 00483BA0 _KiBugCheckDriver
    C1 HIGHLOW 00483BA0 _KiBugCheckDriver
    FCE HIGHLOW 00483BA0 _KiBugCheckDriver
    DA HIGHLOW 00483BA0 _KiBugCheckDriver
    ..
    и т.д.
    Т.е. правильно ли я понимаю, что RVA переменной _KiBugCheckDriver есть 00483BA0?
    Вопросы:

    1. Откуда dumpbin получает текстовое имя "_KiBugCheckDriver" если в ntoskrnl.exe явно оно не присутствует?
    2. Каким образом, покопавшись в кишках загруженного образа РЕ (ntoskrnl.exe в частности) можно найти имя и адрес переменной (например KiBugCheckDriver) как это делает dumpbin?

    Можно привести какие-то аналогии по отношению к получению списка экспортов и импортов РЕ - с этим я немного знаком...

    Спасибо!
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    KeBugCheck2() дизасмить нужно. Можно релоки пропарсить, но не эффективно, поэтому взять дизассемблер длин и найти ссылку, там их многа на эту переменную.
    RVA KiBugCheckDriver будет 0x83BA0(нужно базу модуля 0x400000 отнять).
    Наверно из символов вытянул.
     
  3. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    ну а чисто принципиально как это делается дизассемблером? ведь текстового имени _KiBugCheckDriver в самом екзешнике нет...
     
  4. Clerk

    Clerk Забанен

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

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    я спрашивал о том откуда берется текстовое имя _KiBugCheckDriver для соответствующего адреса/смещения?

    вообще, есть ли готовый код для поиска неэкспортированых функций?
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Символы скорее всего.