hook для несуществующей функции KERNEL32.dll
От: alextretij  
Дата: 18.11.10 10:19
Оценка:
Хочу установить MS SQL2008 Express на Windows 2000 Server. Он эго официаьно не потдерживает.

Ставиться не хочет, дошел до ошибки
"Точка входа в процедуру GetConsoleProcessList не найдена в библиотеке DLL KERNEL32.dll"

Это новая API-функция. Её нет в Windows 2000 Server.

Хочу как-то сделать так чтобы инсталятор SQL2008 Express "нашел" это функцию.

Было два варанта:

1. Переименовать стандартную библиотеку KERNEL32.dll в KERNEL32_1.dll. Написать свою KERNEL32.dll в которой все функции "пробрасывать" в KERNEL32_1.dll, а функфионал GetConsoleProcessList дописать свой. Не могу, нет h-файла для коректного описания свех 1000 функций с KERNEL32.dll. Или я не знаю как по другому это сделать.

2. Думал сделать hook, но как сделать это на функцию которой нет в таблице импорта...

Может кто-то что-то посоветует?
Re: hook для несуществующей функции KERNEL32.dll
От: Clickmaker Россия http://relaxander.webest.net/
Дата: 18.11.10 10:22
Оценка:
A>Хочу как-то сделать так чтобы инсталятор SQL2008 Express "нашел" это функцию.

А есть уверенность, что обманув инсталлятор, удастся также обуть и сам сиквел?
Re: hook для несуществующей функции KERNEL32.dll
От: LuciferSaratov Россия  
Дата: 18.11.10 10:46
Оценка: 5 (1)
Здравствуйте, alextretij, Вы писали:

A>1. Переименовать стандартную библиотеку KERNEL32.dll в KERNEL32_1.dll. Написать свою KERNEL32.dll в которой все функции "пробрасывать" в KERNEL32_1.dll, а функфионал GetConsoleProcessList дописать свой. Не могу, нет h-файла для коректного описания свех 1000 функций с KERNEL32.dll. Или я не знаю как по другому это сделать.


Прототипы функций знать необязательно, чтобы сделать proxy dll.
http://www.codeproject.com/KB/DLL/CreateYourProxyDLLs.aspx

И лучше стандартную библиотеку не переименовывать, а положить свою kernel32.dll в ту же папку, где находится инсталлятор.
Re[2]: hook для несуществующей функции KERNEL32.dll
От: alextretij  
Дата: 18.11.10 11:40
Оценка:
Здравствуйте, Clickmaker, Вы писали:

A>>Хочу как-то сделать так чтобы инсталятор SQL2008 Express "нашел" это функцию.


C>А есть уверенность, что обманув инсталлятор, удастся также обуть и сам сиквел?


Гарантии нет, но а вдруг ...
Re[2]: hook для несуществующей функции KERNEL32.dll
От: Аноним  
Дата: 30.11.10 10:58
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>Здравствуйте, alextretij, Вы писали:


A>>1. Переименовать стандартную библиотеку KERNEL32.dll в KERNEL32_1.dll. Написать свою KERNEL32.dll в которой все функции "пробрасывать" в KERNEL32_1.dll, а функфионал GetConsoleProcessList дописать свой. Не могу, нет h-файла для коректного описания свех 1000 функций с KERNEL32.dll. Или я не знаю как по другому это сделать.


LS>Прототипы функций знать необязательно, чтобы сделать proxy dll.

LS>http://www.codeproject.com/KB/DLL/CreateYourProxyDLLs.aspx

LS>И лучше стандартную библиотеку не переименовывать, а положить свою kernel32.dll в ту же папку, где находится инсталлятор.



так и сделал, но не помогло. Windows не берет мою kernel32.dll, а пользуется стандартной. Я так понял что он уже имеет загруженную kernel32.dll и использует её. Когда положил её в system32 то сразу же дамп.
Re[3]: hook для несуществующей функции KERNEL32.dll
От: IID Россия  
Дата: 30.11.10 16:11
Оценка:
Здравствуйте, Аноним, Вы писали:

LS>>И лучше стандартную библиотеку не переименовывать, а положить свою kernel32.dll в ту же папку, где находится инсталлятор.


А>так и сделал, но не помогло. Windows не берет мою kernel32.dll, а пользуется стандартной. Я так понял что он уже имеет загруженную kernel32.dll и использует её. Когда положил её в system32 то сразу же дамп.


Гугли по KnownDlls
kalsarikännit
Re[3]: hook для несуществующей функции KERNEL32.dll
От: LuciferSaratov Россия  
Дата: 02.12.10 13:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>так и сделал, но не помогло. Windows не берет мою kernel32.dll, а пользуется стандартной. Я так понял что он уже имеет загруженную kernel32.dll и использует её. Когда положил её в system32 то сразу же дамп.


Тогда такой вариант: назови свою библиотеку kernel33.dll, и подредактируй таблицу импорта целевого исполняемого файла, чтобы он ее загружал вместо kernel32.dll.
Re: hook для несуществующей функции KERNEL32.dll
От: Alexey Frolov Беларусь  
Дата: 07.12.10 17:49
Оценка:
Здравствуйте, alextretij, Вы писали:

A>Хочу установить MS SQL2008 Express на Windows 2000 Server. Он эго официаьно не потдерживает.


А можете рассказать зачем такое нужно? Спрашиваю чисто из любопытства, потому что сам придумать такой случай не могу
Re[3]: Мечтать не вредно
От: Wissenschaftler http://rsdn_user.livejournal.com
Дата: 07.12.10 18:24
Оценка:
Здравствуйте, alextretij, Вы писали:

A>Здравствуйте, Clickmaker, Вы писали:


A>>>Хочу как-то сделать так чтобы инсталятор SQL2008 Express "нашел" это функцию.


C>>А есть уверенность, что обманув инсталлятор, удастся также обуть и сам сиквел?


A>Гарантии нет, но а вдруг ...

Ага, типа других отличий между Win2K и Win2008 нет и не было.
Запретное обсуждение модерирования RSDN:
http://rsdn-user.livejournal.com/652.html
Re[3]: hook для несуществующей функции KERNEL32.dll
От: Кодёнок  
Дата: 09.12.10 13:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>так и сделал, но не помогло. Windows не берет мою kernel32.dll, а пользуется стандартной. Я так понял что он уже имеет загруженную kernel32.dll и использует её. Когда положил её в system32 то сразу же дамп.


Насколько я знаю, kernel32 и ntdll не загружаются через LoadLibrary, они уже существуют в памяти при создании процесса по заранее известному адресу, еще до начала выполнения. (чем бы вы загрузили kernel32, если LoadLibrary находится в самом kernel32, который еще не загружен?)

Если функция не находится при динамическом связывании, то можно загрузить инсталлер со своей DLL, из которой хукнуть GetProcAddress и вернуть свою реализацию.
Re[4]: hook для несуществующей функции KERNEL32.dll
От: ononim  
Дата: 09.12.10 14:56
Оценка:
Кё>Насколько я знаю, kernel32 и ntdll не загружаются через LoadLibrary, они уже существуют в памяти при создании процесса по заранее известному адресу, еще до начала выполнения.
Не совсем. В АП процесса, который еще не начал исполнения есть тока образ ехе шника и ntdll. kernel32.dll загружает инициализатор процесса в ntdll.dll Если очень хочется — можно всунуть свой код который исполнится в процессе до загрузки kernel32.dll но в данном случае это не самое простое решение проблемы. Самое простое имхо — написать/найти свой загрузчик .exe файлов.

Кё>(чем бы вы загрузили kernel32, если LoadLibrary находится в самом kernel32, который еще не загружен?)

LoadLibrary — лишь фасад к ntdll!LdrLoadDll
Как много веселых ребят, и все делают велосипед...
Re: hook для несуществующей функции KERNEL32.dll
От: std.denis Россия  
Дата: 10.12.10 21:28
Оценка:
A>Хочу как-то сделать так чтобы инсталятор SQL2008 Express "нашел" это функцию.
Приделать свой загрузчик, в котором нужные функции маппятся на заглушки? Например модифицировав тот же UPX
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.