Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

определить размер dll

268
27 октября 2009 года
Михаил
587 / / 25.06.2005
Здравствуйте

каким образом можно определить размер загруженной dll в dllmain?
пока получаю путь к файлу и определяю размер файла
7
27 октября 2009 года
@pixo $oft
3.4K / / 20.09.2006
Размер в памяти или на диске?Если на диске,то всё верно.Зачем ещё что-то изобретать?
6
27 октября 2009 года
George
4.1K / / 05.01.2007
Цитата: @pixo $oft
Размер в памяти или на диске?Если на диске,то всё верно.Зачем ещё что-то изобретать?


написано - загруженной длл. значит в памяти.
по теме - уже обсуждали. не далее чем неделю назад. пользуйте поиск по форуму. правда вопрос был про размер всего приложения со всеми дллками.

268
27 октября 2009 года
Михаил
587 / / 25.06.2005
а в памяти dll выглядит по другому?

мне необходимо получить доступ к содержимому библиотеки

можно из файла прочитать, но так как она потом будет загружаться я хотел сразу двух зайцев :)
через LoadLibrary получаю адрес начала библиотеки и потом просто читать из памяти
3
27 октября 2009 года
Green
4.8K / / 20.01.2000
Цитата: Михаил
а в памяти dll выглядит по другому?


Да, выглядит по-другому.
Почитай описание PE-формата.

Цитата: Михаил

мне необходимо получить доступ к содержимому библиотеки


Что значит "получить доступ к содержимому библиотеки" ?
К какому содержимому? Какой доступ?

Цитата: Михаил

можно из файла прочитать, но так как она потом будет загружаться я хотел сразу двух зайцев :)
через LoadLibrary получаю адрес начала библиотеки и потом просто читать из памяти


Тогда тебе ещё надо будет распарсить таблицу секций, понять куда какая секция загрузилась с какими атрибутами.

Главный вопрос: для чего тебе это?

268
27 октября 2009 года
Михаил
587 / / 25.06.2005
Цитата: Green

Что значит "получить доступ к содержимому библиотеки" ?
К какому содержимому? Какой доступ?



к байтам

нужно это для расчета crc при загрузке библиотеки

как можно сделать чтобы библиотека сама при загрузке проверяла свою контрольную сумму?

6
27 октября 2009 года
George
4.1K / / 05.01.2007
блин, ну контрольную сумму можно с самого файла посчитать.
3
27 октября 2009 года
Green
4.8K / / 20.01.2000
Цитата: Михаил
к байтам

нужно это для расчета crc при загрузке библиотеки

как можно сделать чтобы библиотека сама при загрузке проверяла свою контрольную сумму?


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

1
27 октября 2009 года
kot_
7.3K / / 20.01.2000
Опять же - цель всего этого действа?
Написание очередной супер-пупер неломаемой защиты для программы?
6
27 октября 2009 года
George
4.1K / / 05.01.2007
ну может боится что вместе с длл вирусня прицепится...
7
27 октября 2009 года
@pixo $oft
3.4K / / 20.09.2006
CheckSumMappedFile в помощь.Она для этого предназначена
А то вы,небось,и свой алгоритм для расчёта CRC реализовать хотели
3
27 октября 2009 года
Green
4.8K / / 20.01.2000
Цитата: @pixo $oft
CheckSumMappedFile в помощь.Она для этого предназначена
А то вы,небось,и свой алгоритм для расчёта CRC реализовать хотели


CheckSumMappedFile для DLL бесполезна.

7
27 октября 2009 года
@pixo $oft
3.4K / / 20.09.2006
[QUOTE=MSDN]The CheckSumMappedFile function computes a new checksum for the file and returns it in the CheckSum parameter. This function is used by any application that creates or modifies an [COLOR="Red"]executable image[/COLOR]. Checksums are required for kernel-mode drivers and some system [COLOR="#ff0000"]DLLs[/COLOR]. The linker computes the original checksum at link time, if you use the appropriate linker switch. For more details, see your linker documentation.[/QUOTE]Да ну?
P.S.DLL тоже относятся к "executable image".Оно и понятно
3
28 октября 2009 года
Green
4.8K / / 20.01.2000
Цитата: @pixo $oft
Да ну?
P.S.DLL тоже относятся к "executable image".Оно и понятно



Ну да!

This function is used by any application that creates or modifies an executable image.

Ты пробовал применять эту функцию к загруженным в память (как image) DLL ?
Попробуй, будешь удивлен.

Эта функция по сути своей делает CRC участка памяти, заданного входными параметрами BaseAddr и FileLen.
Одна и та же DLL, загруженная на разных машинах или на одной но по разным адресам, будет иметь разные CRC из-за IAT, RelocTable и пр.
А если к этому ещё добавить секции, содержимое которых меняется (data, shared)?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог