как получить физический адрес экспортируемой функции

Обсуждения по программированию для ОС Windows безотносительно используемого языка программирования. Windows NT, Win32, Windows API, ядро и драйверы.
arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

как получить физический адрес экспортируемой функции

Сообщение arthur2 » 27.03.2014 (Чт) 11:11

Не хочется по-новой перелапачивать мануалы по формату РЕ из-за такой ерунды - ткните носом в готовое решение :)

Через GetProcAddress получаю B771CA0 (так понимаю RVA), в таблице экспорта нахожу 1CA0 (надо полагать, VA), теперь как получить хоть из того, хоть из другого позицию в файле?
Артур
 
   

The trick
Постоялец
Постоялец
 
Сообщения: 774
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: как получить физический адрес экспортируемой функции

Сообщение The trick » 27.03.2014 (Чт) 11:48

http://source.winehq.org/source/dlls/ntdll/loader.c
Определяешь на какой раздел указывет RVA
Вычитаешь из RVA адрес (VirtualAddress) этого раздела
Добавляешь к полученному результату файловое смещение раздела (PointerToRawData).
UA6527P

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: как получить физический адрес экспортируемой функции

Сообщение arthur2 » 28.03.2014 (Пт) 4:44

Спасибо, получилось :)
Блин, a сначала-то перепутал RVA и VA...
Артур
 
   


Вернуться в Windows-программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList