Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перечень подгружаемых длл, от чего зависит? 
:(
    Опции темы
anwe
Дата 9.2.2008, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Доброе время суток!

Собственно, от чего зависит, если можно так сказать (написать), перечень подгружаемых осью ддлок к моему процессу (до его старта)? Или другими словами почему на одном компе, в проге, где использую функции из user32 она (user32) и подгружается, а на другом компе к этой же проге кроме user'а цепляется еще пара-тройка длл?

З.Ы.Если же сам user не подключать, то и этих "паразиток"-длл так же нет.
PM MAIL   Вверх
W4FhLF
Дата 9.2.2008, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Загрузчик проходится по таблице импорта для восстановления IAT(в упрощённом виде, есть множество механизмов импорта) и подгружает каждую DLL, если она ещё не загружена, во-время загрузки DLL загрузчик проходится по её импорту и загружает, если не загружены, те библиотеки, которые импортирует DLL. И т.д.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
anwe
Дата 9.2.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Ну а почему на разных компах это проходит по-разному? Код-то один.
PM MAIL   Вверх
W4FhLF
Дата 9.2.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Ну откуда я знаю почему? В разных ОС стандартный набор разный. Есть библиотеки, которые инжектятся допустим фаерволами или программами вроде Traffic Compressor; Lingvo. В реестре есть множество ключей, где содержатся списки DLL подгружаемые для определённых процессов и приложений. 

Вот я прямо сейчас собрал приложение вообще без импорта на ассемблере, которое крутит бесконечный цикл, запустил и посмотрел список модулей:

Цитата

ntdll.dll
kernel32.dll
user32.dll
wl_hook.dll
advapi32.dll
gdi32.dll
rpcrt4.dll



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
anwe
Дата 9.2.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



W4FhLF, ты попал в точку. То что и у меня:
...
advapi32.dll
gdi32.dll
rpcrt4.dll
Ну откуда же берутся advapi32.dll и rpcrt4.dll?

Хорошо, как их выгрузить FreeLibrary не помагает!
PM MAIL   Вверх
W4FhLF
Дата 9.2.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(anwe @  9.2.2008,  15:57 Найти цитируемый пост)
Ну откуда же берутся advapi32.dll и rpcrt4.dll?


В моём случае они грузятся из-за того, что Outpost суёт свою глючную wl_hook.dll в каждый процесс, а она импортирует функции оттуда.

Цитата(anwe @  9.2.2008,  15:57 Найти цитируемый пост)
Хорошо, как их выгрузить FreeLibrary не помагает!


А зачем? Они туда не просто так "потусовацо" грузяться smile



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
anwe
Дата 9.2.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Цитата(W4FhLF @  9.2.2008,  18:07 Найти цитируемый пост)
А зачем?

Хочу уменьшить размер своей проги: повыгружать ненужное. Как, тогда, быть?
PM MAIL   Вверх
W4FhLF
Дата 9.2.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(anwe @  9.2.2008,  19:40 Найти цитируемый пост)
Хочу уменьшить размер своей проги: повыгружать ненужное. 


Во-первых, с чего ты взял, что оно ненужное? Ничего ненужного ОС грузить не станет. Во-вторых, какой размер? В виртуальной памяти? У тебя он слишком большой? Даже если так, то unloading библиотек его не немного уменьшит. 




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
anwe
Дата 10.2.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Цитата(W4FhLF @  9.2.2008,  18:50 Найти цитируемый пост)
Во-первых, с чего ты взял, что оно ненужное?

Потому что я не использую функции из этих библиотек.

Цитата(W4FhLF @  9.2.2008,  18:50 Найти цитируемый пост)
Во-вторых, какой размер? В виртуальной памяти?

740 КБ для двух строк: Sleep и jmp

Цитата(W4FhLF @  9.2.2008,  18:50 Найти цитируемый пост)
unloading библиотек его не немного уменьшит

Что уменьшит существеннее?
PM MAIL   Вверх
W4FhLF
Дата 10.2.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(anwe @  10.2.2008,  19:21 Найти цитируемый пост)
Потому что я не использую функции из этих библиотек.


Значит их использует/использовал (невозможно сказать однозначно) кто-то другой!

Цитата(anwe @  10.2.2008,  19:21 Найти цитируемый пост)
740 КБ для двух строк: Sleep и jmp


Sleep импортируется из kernel32.dll, та в свою очередь вызывает переходит к ядерной функции из ntdll.dll. Ты напрямую функции из ntdll.dll не используешь, по-твоему можно её выгрузить?smile 

Минимальный набор для процесса kernel32.dll и ntldll.dll. Они подгружаются в любой процесс. Если включить в процесс один Sleep, то в списке модулей будут только kernel32 и ntdll (на чистой системе). 

Цитата(anwe @  10.2.2008,  19:21 Найти цитируемый пост)
Что уменьшит существеннее?


А 740 кб это немного, у тебя наверное представление такое, что процесс - это твой код и набор dll и ничего больше. Ошибаешься, процесс - сущность гораздо более сложная. Почитай в умных книжках, у Руссиновича например, подробнее. 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
jonie
Дата 10.2.2008, 20:22 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



при чем тут вирт память и размер программы ?
а 740 килобайт - это вам поди услугу компилятор делает в виде инициализации CRT
почитайте тему "уменьшение размера программ всеми способами" тут гдето была...


а это ы про виртуалпамять...)

Это сообщение отредактировал(а) jonie - 10.2.2008, 20:22


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
anwe
Дата 10.2.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Ясно, что ядерные длл не выгрузишь, и не надо. Я же раньше писал:
Цитата(anwe @  9.2.2008,  14:57 Найти цитируемый пост)
Ну откуда же берутся advapi32.dll и rpcrt4.dll?

Они-то для моих двух строчек ни к чему. Можно от них избваиться?
PM MAIL   Вверх
W4FhLF
Дата 10.2.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



anwe, что ты такой дотошный smile Я ж тебе говорю, что если их грузячт - значит они используются. Кем? Не знаю, слишком мало инфы для того, чтобы делать выводы. Выше я привёл пример почему они подгружаются у меня. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
anwe
Дата 10.2.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Цитата(W4FhLF @  10.2.2008,  19:44 Найти цитируемый пост)
что ты такой дотошный 

Какой есть smile 
Интересно же! Ведь исходная прога-то одна.
Но, собственно, понятно. Спасибо и на этом.
PM MAIL   Вверх
anwe
Дата 10.2.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Это всё user32. Это всё юзер, поршивец эдакий. Вот кто грузит advapi32 и rpcrt4.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.