Удалить/модифицировать файл загруженной dll.
От: filertos  
Дата: 25.09.05 06:06
Оценка:
Каким образом можно сделать?

Задача:
Имеется программа №1, которая в процессе выполнения загружает некоторую дллку.
Имеется наша программа (№2), которая запускает программу №1 и после загрузки библиотеки должна модифицировать файл длл, чтобы при последующем вызове loadlibrary для нее, модифицированный модуль заменил существующий.

Собственные эксперименты и наблюдения:
1. Far+hiew.
Запускаем программу №1 вручную.
-Редактировать длл нельзя.-
Копируем файл <имя>.dll в файл <имя>.dll_new.
Изменяем файл <имя>.dll_new.
Копируем <имя>.dll_new в <имя>.dll.
На запрос о перезаписи отвечаем утвердительно.
-Все прекрасно работает.-

2. Программа №2.
Запускает программу №1.
Копирует файл dll в dll_new:

CopyFile(dll, dll_new, FALSE)
--
Открывает файл для записи:

CreateFile(dll_new, GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
--
Изменяет файл dll_new:

WriteFile(hFile_new, buff, 1, byteswritten, NULL)
--
Закрывает открытый файл.
Копирует dll_new в dll:

CopyFile(dll_new, dll, FALSE)
--
-Копирование не проходит-

3. Повторяем эксперимент №1 (Far + hiew).
-Результат аналогичный полученному в эксперименте №2.-

Может на это влияют какие-либо атрибуты файла, которые я просто не учел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.