· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.VIROLOGY —› замена системных DLL

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


Дата: Окт 10, 2003 19:28:36

Доброе время суток, коллеги !

Хочу обсудить на форуме одну интересную тему. Предлагаю оставить пока за кадром полемику типа "а кому и для чего все это нужно". Как говориться, jedem das seine...
Итак, проблема - заменить одну из системных и загруженных в данный момент (это важно!) DLL Windows своей собственной. Либо системной оригинальной, но чуть-чуть видоизмененной - это кому что ближе ;-). Покопавшись в статьях и ссылках, я, к сожалению, так и не смог найти удовлетворительного решения. В официальной документации Microsoft сказано, что для подобных целей следует использовать файл wininit.ini для семейства Windows 9X и API MoveFileEx() для семейства Windows 2000-XP. Обобщением такого подхода может служить вызов функции SetupInstallFile(Ex) из SETUPAPI.DLL, которой нужно только указать source и destination, а всю остальную рутинную работу она берет на себя.
Но! Проведя с успехом подготовку к замене системной DLL, мы сталкиваемся с (вроде бы как) непреодолимым барьером : System File Protection ! После перезагрузки, когда процесс обновления DLL должен вступить в свою завершающую стадию этот код ( расположенный, как я понимаю, в SFC.DLL ) нагло перечеркивает все наши старания и усилия. Причем лично я наблюдал сей эффект только под Windows Millenium и XP - под Windows 98 и Windows 2000 вызов SetupInstallFile успешно решал задачу.
В чем же тогда дело ? Я пробовал вручную изменять версию DLL в ресурсах (якобы на более свежую), игрался с датой/временем создания файлов, однако это не помогало.
В одном из выпусков журнала 29-A (кажется в 5-м) я вычитал такую идею : вместе с модифированием системной
DLL автор предлагал также "подправить" и "виновника всех бед" - саму SFC.DLL. Однако, по ряду причин этот подход выглядит далеко не идеальным, скорее вынужденной, крайней мерой. И самая главная причина кроется в необходимости лезть напрямую по фиксированному смещению в код DLLки , которая вовсе не обязана быть одинаковой (скорее наоборот)для всех версий и под-версий Windows...
В общем, буду рад, если кого-то этот вопрос заинтересует.

С уважением,
VetabetA


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