Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 12:27   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
Восклицание таблица импорта

Читаю туториалы по ассемблеру с WASM-a.
Авто пишет:
Цитата:
Получаем RVA символов импоpта. Сначала edi указывает на PE-заголовок. Мы используем его, чтобы пеpейти ко 2nd члену диpектоpии данных и получить значение паpаметpа VirtualAddress.

invoke RVAToOffset,pMapping,edi
mov edi,eax
add edi,pMapping

Здесь скpывается одна из ловушек для новичков PE-пpогpаммиpования. Большинство из адpесов в PE-файле - это RVA и RVA имеют значение только, когда загpужены в память PE-загpузчиком. В нашем случае мы мэппиpуем файл в память, но не так, как это делает PE-загpузчик. Поэтому мы не можем напpямую использовать эти RVA. Каким-то обpазом мы должны конвеpтиpовать эти RVA в файловые смещения. Специально для этого я написал функцию RVAToOffset. Я не буду детально детально анализиpовать ее здесь. Достаточно сказать, что она пpовеpяет свеpяет данный RVA с RVA'ми началами и концами всех секций в PE-файле и использует значение в поле PointerToRawData из стpуктуpы IMAGE_SECTION_HEADER, чтобы сконвеpтиpовать RVA в файловое смещение.
А разве RVA (относительный виртуальный адрес) и файловое смещение это не одно и то же?
Если вам не трудно, можете подробнее про это пояснить на пальцах или же хорошей ссылочкой поделиться?
Просто немножко непонятно, каким образом работает эта функция, как мэпирует файл PE-загрузчик и как это делаем мы в программе.
Заранее спасибо.
Dimarik вне форума Ответить с цитированием
Старый 22.09.2011, 11:26   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

RVA и файловое смещение это не одно и то же!
Цитата:
Сообщение от Dimarik Посмотреть сообщение
Если вам не трудно, можете подробнее про это пояснить на пальцах или же хорошей ссылочкой поделиться?
читай внимательно статьи, в них всё чётко и ясно объяснено, что такое и с чем его едят. RVA это смещение данных после загрузки файла в память.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
касательно импорта данных из Web Volodymyr Microsoft Office Excel 3 14.02.2011 13:38
Таблица импорта PE программы Celestia Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 21.11.2010 16:24
Что такое файл импорта SeRhy Помощь студентам 1 24.05.2009 14:20
Оптимизация импорта из DBF Marina Andreeva БД в Delphi 5 15.05.2009 19:09
Автоматизация импорта процедур nerh Общие вопросы Delphi 1 13.10.2008 22:56