· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HEAP —› dll autoloading

Посл.отвђт Сообщенiе


Дата: Июн 9, 2004 15:33:36

Подскажите, плиз, ключ реестра, где находятся автоматически загружаемые dll. (win XP)


Дата: Июн 9, 2004 16:10:55
Правка

ozzman
Поиск по форуму, rst уже спрашивал.

Как альтернатива — поиск по MSDN…


Дата: Июн 9, 2004 16:44:40

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\WOW
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager
для 16 и 32 разрядных dll. перечисленные здесь dll мапяться еще при загрузке системы, до первого обращения к ним. так же сюда можно записать xdll -> mydll, тогда при статической загрузке xdll загрузится твоя mydll, этот способ можно использовать для перехвата вызовов kernel32.dll, не трогая ни экспорт самой kernel32.dll, ни импорт чужой проги.
ключ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager "анулирует" имя библиотеки, без его стирая из вышестоящих ключей и без перезагрузки системы


Дата: Июн 9, 2004 17:59:55

>перечисленные здесь dll мапяться еще при загрузке системы
это мне и нужно(только для моей длл)

в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager
я создал строковый параметр: ozzman, значение: ozzman.dll
ozzman.dll поместил в папку windows\system32

перезагрузился, библиотека не загрузилась :(

p.s. >так же сюда можно записать xdll -> mydll, тогда при статической загрузке xdll загрузится твоя mydll
Данную фразу я не понял :(


Дата: Июн 9, 2004 18:19:54

>>перечисленные здесь dll мапяться еще при загрузке системы
это мне и нужно(только для моей длл)
обрати внимание: мапаяться, т.е. отображаются на адресное пространство, но на dllmain управление не передается

> перезагрузился, библиотека не загрузилась :(
NT для каждого процесса показывает только те библиотеки, которые он явно затребовал, в 9x системные библиотеки доступны всем процессам даже если они их и не загружали

>> так же сюда можно записать xdll -> mydll, тогда при
>> статической загрузке xdll загрузится твоя mydll
> Данную фразу я не понял :(
ну можно создать алисас для kernel32, чтобы при загрузке kernel32 грузилась совсем другая dll (твоя).


Дата: Июн 9, 2004 18:35:36

>но на dllmain управление не передается
тогда законный вопрос: а как, собственно, передать управление на точку входа длл?

>ну можно создать алисас для kernel32, чтобы при загрузке kernel32 грузилась совсем другая dll (твоя).

вы не могли бы привести пример алиаса, или ссылку, где можно почитать про алиасы.


Дата: Июн 9, 2004 18:40:34

писать exe, и вызывать loadlibrary мне не хочется.


Дата: Июн 9, 2004 18:58:17

ссылка вот: Windows 95 Uses KnownDLLs Registry Key to Find 32-bit DLLs Article ID: Q151646, это правда для 9x, но в NT все происходит аналогичным образом

> писать exe, и вызывать loadlibrary мне не хочется.
а на loadlibrary это и не распростаняется ;)


Дата: Июн 9, 2004 19:12:52

Кстати. Вопрос - а не лучше ли будет через NLS драйвер?
Там ведь вроде тоже грузится всегда... (почти)


Дата: Июн 9, 2004 19:38:46

Может в данном случае подойдёт
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows] AppInit_DLLs ?


Дата: Июн 9, 2004 20:08:27

Windows 95 does not support the loading of a DLL into a process's address space through the use of the AppInit_DLLs registry value. In Windows NT, for every process executed, Windows NT loads the DLLs listed in the AppInit_DLLs registry value into the process' address space. For similar functionality in Windows 95, you can implement a system-wide hook. This article shows by example how to do it.


Дата: Июн 9, 2004 20:34:36

To kaspersky:>а на loadlibrary это и не распростаняется ;)
Что не распростаняется?
Напомню, мне нужно было загрузить длл, и чтобы управление передалось либо на DllMain, либо на одну из функций библиотеки.
>писать exe, и вызывать loadlibrary мне не хочется. - Это чтобы передать управление на dllmain.

Вобщем, всем спасибо, Крису в особенности, я справился сам :)
Через Winlogon загружаем длл, там же устанавливаем ключ Startup и имя функции, с которой начнется выполнение.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.077