Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять PE [D7, Win2k]


Bobby ©   (2005-07-21 16:28:00) 

Уважаемые знатоки.
PE, DLL.
Читаю, читаю умных. Мож чего-то туплю, но не могу найти простых и ясных ответов на вопросы в которые уперся. Делов-то и всего :
получить списки экспорта и импорта функций в DLL.

Можно ли коротко (Да-Нет) меня поправить.

1) Неважно, загружена Dll или лежит на диске. Относительный адрес ВСЕХ PE-структур и полей одинаков. Разница одна - точка отсчета.
  Если загружена GetModuleHandle(), если нет - 0 (начало файла)
2) ВСЕ RVA привязаны к началу файла (или HMODULE)

Я пишу программку и на пробу взял aclui.dll (w2k SP4 размер 79120 байт);

Все заголовки читаются нормально.
Читаю таблицу каталогов(IMAGE_DIRECTORY_ENTRY_EXPORT - 1-я запись.)
Нахожу VirtualAddress = $DE40
      Size           = $BD

3) Значит по адресу  $DE40 должна находится таблица TImageExportDirectory.

4) Я читаю файл с диска. Иду по этому смещению и получаю явный мусор.
  Получается, что с какого-то момента Смещение в файле
  и RVA начинают отличаться.

5) Это связано с выравниванием секций (или страниц) в памяти?

У меня есть программка-просмотрщик PE. Она показывает величину RVA как и
меня. Но если в качестве смещения выбрать просто линейный адрес, то получается
не $DE40 , а $D440. Я посмотрел файл бинарно, действительно, по $D440 лежит
TImageExportDirectory. Куда пропала разница $A00.

К чему прибавлять RVA?????

Устал гадать, а мозги ничего не подсказывают.

Help!!!
Спасибо.


Leonid Troyanovsky   (2005-07-21 21:12:00) [1]


> Bobby   (21.07.05 16:28)  

> простых и ясных ответов на вопросы в которые уперся. Делов-то
> и всего :
> получить списки экспорта и импорта функций в DLL.


От:Peter Below (TeamB) (100113.1...@compuXXserve.com)
Заголовок:Re: How to extract exported function names from .DLL
Группы новостей:borland.public.delphi­.objectpascal
Число:2000/01/09

И на rsdn есть статьи. Кажись, Макса Гумерова

--
Regards, LVT.


Eraser   (2005-07-21 18:36:00) [2]

Bobby   (21.07.05 16:59) [2]

"Линейный адрес файла" тут не причём... по моему на wasm.ru есть статья по структуре PE... да и вообще в нете на эту тему много чего есть.


Bobby   (2005-07-21 16:59:00) [3]

Линейный адрес файла (0-начало Size- конец)


Digitman   (2005-07-21 16:56:00) [4]


> Но если в качестве смещения выбрать просто линейный адрес


лин.адрес чего?


Наверх

Титульная страница Поиск, карта сайта Написать письмо