![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
Насколько я знаю, ничего подобного она не возвращает.