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

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

DLL, LoadLibrary и ReadProcessMemory


Хинт ©   (2005-11-16 20:54:00) 

Есть запакованная dll'ка. Я загружаю её функцией LoadLibrary и хочу сохранить распакованный вариант на диск. Адрес начала dll'ки в памяти моей программы возвращает LoadLibrary, а как же быть адресов конца библиотеки? Как его получить?
И еще один вопрос: если dll'ка не запакована, то в АП моего процесса она отобразится идентично с тем, как лежит на диске?


Digitman   (2005-11-17 09:21:00) [1]


> загружаю её функцией LoadLibrary и хочу сохранить распакованный
> вариант


загрузка и распаковка, мягко говоря, разные разности)

а в чем, интересно было бы узнать, тайный смысл сохранения образа загруженного и проинициализированного pe-модуля в файл ?


Хинт   (2005-11-16 22:13:00) [2]

Большое спасибо. Попробую сделать через Tool Help.


begin...end   (2005-11-16 22:04:00) [3]

> Хинт ©   (16.11.05 21:57) [4]
> такой вариант не будет работать под NT

Да, именно под NT-- не будет. Потому что там нет функций Tool Help.
Под более современными системами на основе NT (2000, XP) -- будет.


Хинт   (2005-11-16 22:02:00) [4]


> Мне почему-то пришло в голову CreateToolhelp32Snapshot +
> Module32First/Module32Next + MODULEENTRY32.modBaseSize.

"Как оказалось, в kernel32.dll от NT нет функций для работы TLHelp32"


Джо   (2005-11-16 22:00:00) [5]

[2] Хинт ©  
[3] begin...end ©

Да, я уже проверил, высказываение в [1] не соответствует действительности.


Хинт   (2005-11-16 21:57:00) [6]


> Мне почему-то пришло в голову CreateToolhelp32Snapshot +
> Module32First/Module32Next + MODULEENTRY32.modBaseSize.


Судя по этой статье
http://www.delphikingdom.com/asp/articles_forum.asp?ArticleID=775
такой вариант не будет работать под NT (или я что-то не так понял)


begin...end   (2005-11-16 21:13:00) [7]

> Хинт ©   (16.11.05 20:54)
> как же быть адресов конца библиотеки? Как его получить?

Мне почему-то пришло в голову CreateToolhelp32Snapshot + Module32First/Module32Next + MODULEENTRY32.modBaseSize.

> Джо ©   (16.11.05 20:55) [1]

Она возвращает хэндл модуля -- это и есть базовый адрес загрузки.


Хинт   (2005-11-16 20:57:00) [8]

Но это факт =) Открыл WinHEX'ом АП процесса, перешел по значению, полученному функцией LoadLibrary и увидел заголовок этой самой библиотеки


Джо   (2005-11-16 20:55:00) [9]


> начала dll'ки в памяти моей программы возвращает LoadLibrary

Насколько я знаю, ничего подобного она не возвращает.


Наверх

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