известно, что 32х разрядные DLL-ки не запускаются из 64х разрядных программ. подскажите, как обстоят дела для 32х разрядного драйвера и 64х разрядной программы?
чего? 32-разрядный драйвер по понятным причинам не загрузится на 64-разрядном ядре, тк нет в ядре WOW64... 32-разрядное приложение запустится на 64-битной операционной системе семейства Windows с помощью WOW64..
в смысле может ли 32-разрядное ПО общаться с 64-разрядным драйвером? да, может... или может ли 32-разрядное ПО загрузить какой-то 64-разрядный драйвер в ядро? не уверен, но скорее всего может, если драйвер подписан... ну или эксплойтом... ддл-ки не запускаются, а загружаются в виртуальную память процесса... если процесс 32-разрядный работает в слое WOW64, то он может загружать 32-разрядные библиотеки... и он может загружать 64-битные библиотеки, если один его поток сможет перейти в 64-битный режим, но это уже определённые трюки нужны, да и не особо толку от этого... 64-разрядный процесс может загружать только 64-битные библиотеки, но опять же с помощью определённых трюков можно загрузить в процесс слой WOW64... при чем тут драйвер не особо понимаю?
Rel Если трюки с подгрузкой слоев не иллитно-приватные, можете рассказать подробнее либо ткнуть носом где почитать?
ну вот например статья (x64 код в x86 WOW64 процессе): http://vxheavens.com/lib/vrg02.html в обратную сторону погугли, тож где-то видел статью на данную тему....
видимо надо рассматривать весь путь прохождения данных от драйвера до прикладного ПО. службы и сервисы тоже ведь могут быть как 32х так и 64х разрядные, или нет?
да, существуют хостеры svchost.exe как для 32-разрядных сервисных dll, так и для 64-разрядных... имеется ввиду для стандартных сервисов, всякие редкие проекты типа нативного шелла: http://hex.pp.ua/nt-native-applications-shell.php и тд должны быть только в 64-разрядной сборке, я полагаю...