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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 15:29   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию секции. поле PointerToRawData

в структуре IMAGE_SECTION_HEADER есть такое поле: PointerToRawData, в котором находится RVA начала секции. Но если файл загружается не PE-загрузчиком, а загружается с диска, то при обращении по этому адресу будет или access violantation или же мы не туда обратимся. Нужно RVA преобразовать в файловое смещение.
как это можно сделать?
Dimarik вне форума Ответить с цитированием
Старый 25.02.2012, 15:41   #2
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Задача по сути такая. Найти адрес начала и конца (для каждой секции), чтобы можно было произвести чтение/запись оттуда. Кстати, можете подсказать, сколько всего в файле секций? 16? или же их количество не ограничено и может быть вручную установлено при линковке?
Dimarik вне форума Ответить с цитированием
Старый 26.02.2012, 20:20   #3
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

В PE-файле есть разные RVA. Например, в IMAGE_SECTION_HEADER есть поле PointerToRawData. Это пу сути RVA на начало секции. Но нельзя им просто так пользоваться: к базовуму адресу прибавить RVA и перейти на начало. Это нельзя потому что при стандартное загрузке PE-файла в память, адреса будут немножко другими чем при загрузке PE-загрузчиком.
Задача: загрузить PE-файл как это делает PE-загрузчик. Если вам не трудно, поясните, пожалуйста поподробней этот адлгоритм, а то по тому что я нагуглил http://www.rsdn.ru/article/baseserv/peloader.xml
разобраться до конца у меня, к сожалению, не получилось.
Dimarik вне форума Ответить с цитированием
Старый 26.02.2012, 21:20   #4
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

>есть такое поле: PointerToRawData, в котором находится RVA начала секции.
Это не RVA, а как раз таки смещение относительно начала файла.
SnX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Критические секции coNsept Общие вопросы C/C++ 7 09.09.2011 00:54
Секции PE файлов fragment Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 11.05.2010 11:50
Критические секции Altera Общие вопросы Delphi 2 25.12.2009 10:45
Секции russian-stalker Общие вопросы Delphi 5 06.09.2008 20:25
Dib-секции nightstalker Win Api 3 30.01.2007 20:22