![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Доброе время суток!
Собственно, от чего зависит, если можно так сказать (написать), перечень подгружаемых осью ддлок к моему процессу (до его старта)? Или другими словами почему на одном компе, в проге, где использую функции из user32 она (user32) и подгружается, а на другом компе к этой же проге кроме user'а цепляется еще пара-тройка длл? З.Ы.Если же сам user не подключать, то и этих "паразиток"-длл так же нет. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Загрузчик проходится по таблице импорта для восстановления IAT(в упрощённом виде, есть множество механизмов импорта) и подгружает каждую DLL, если она ещё не загружена, во-время загрузки DLL загрузчик проходится по её импорту и загружает, если не загружены, те библиотеки, которые импортирует DLL. И т.д.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Ну а почему на разных компах это проходит по-разному? Код-то один.
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Ну откуда я знаю почему? В разных ОС стандартный набор разный. Есть библиотеки, которые инжектятся допустим фаерволами или программами вроде Traffic Compressor; Lingvo. В реестре есть множество ключей, где содержатся списки DLL подгружаемые для определённых процессов и приложений.
Вот я прямо сейчас собрал приложение вообще без импорта на ассемблере, которое крутит бесконечный цикл, запустил и посмотрел список модулей:
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
W4FhLF, ты попал в точку. То что и у меня:
... advapi32.dll gdi32.dll rpcrt4.dll Ну откуда же берутся advapi32.dll и rpcrt4.dll? Хорошо, как их выгрузить FreeLibrary не помагает! |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
В моём случае они грузятся из-за того, что Outpost суёт свою глючную wl_hook.dll в каждый процесс, а она импортирует функции оттуда. А зачем? Они туда не просто так "потусовацо" грузяться -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
||||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Во-первых, с чего ты взял, что оно ненужное? Ничего ненужного ОС грузить не станет. Во-вторых, какой размер? В виртуальной памяти? У тебя он слишком большой? Даже если так, то unloading библиотек его не немного уменьшит. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Потому что я не использую функции из этих библиотек. 740 КБ для двух строк: Sleep и jmp Что уменьшит существеннее? |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Значит их использует/использовал (невозможно сказать однозначно) кто-то другой! Sleep импортируется из kernel32.dll, та в свою очередь вызывает переходит к ядерной функции из ntdll.dll. Ты напрямую функции из ntdll.dll не используешь, по-твоему можно её выгрузить? Минимальный набор для процесса kernel32.dll и ntldll.dll. Они подгружаются в любой процесс. Если включить в процесс один Sleep, то в списке модулей будут только kernel32 и ntdll (на чистой системе). А 740 кб это немного, у тебя наверное представление такое, что процесс - это твой код и набор dll и ничего больше. Ошибаешься, процесс - сущность гораздо более сложная. Почитай в умных книжках, у Руссиновича например, подробнее. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
при чем тут вирт память и размер программы ?
а 740 килобайт - это вам поди услугу компилятор делает в виде инициализации CRT почитайте тему "уменьшение размера программ всеми способами" тут гдето была... а это ы про виртуалпамять...) Это сообщение отредактировал(а) jonie - 10.2.2008, 20:22 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
||||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
anwe, что ты такой дотошный
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
||||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Это всё user32. Это всё юзер, поршивец эдакий. Вот кто грузит advapi32 и rpcrt4.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |