дешифровка файла при открытии
От: zdima Россия  
Дата: 12.11.02 15:43
Оценка:
Доброго времени суток!
Есть зашифрованный файл (как расшифровать знаю) он на диске или CD-ROM. Хочется его открыть ActivX контролом, но тот, естественно, понимает только нешифрованные файлы, и в качестве аргумента при открытии берёт только имя файла. Помогите пл-з как бы это всё провернуть не создавая временных файлов?
Re: дешифровка файла при открытии
От: vasketsov Россия http://ntprog.by.ru
Дата: 12.11.02 15:51
Оценка:
Здравствуйте zdima, Вы писали:

Z>Доброго времени суток!

Z>Есть зашифрованный файл (как расшифровать знаю) он на диске или CD-ROM. Хочется его открыть ActivX контролом, но тот, естественно, понимает только нешифрованные файлы, и в качестве аргумента при открытии берёт только имя файла. Помогите пл-з как бы это всё провернуть не создавая временных файлов?

Перехвати у него [Zw]{Create|Open}File или что он там использует.
Васкецов Сергей
http://registry.km.ru
Re[2]: дешифровка файла при открытии
От: zdima Россия  
Дата: 12.11.02 16:10
Оценка:
Здравствуйте vasketsov, Вы писали:

V>Перехвати у него [Zw]{Create|Open}File или что он там использует.


Это как?
Re[3]: дешифровка файла при открытии
От: vasketsov Россия http://ntprog.by.ru
Дата: 12.11.02 16:30
Оценка:
Здравствуйте zdima, Вы писали:

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


V>>Перехвати у него [Zw]{Create|Open}File или что он там использует.


Z>Это как?


Как перехватывать — писать не буду, спросите у Поиска или пряво у Рихтера.

Логика такая.

При открытии файла этим контролом надо его открыть самому и расшифровать в память, а потом возвращать на ReadFile/WriteFile/GetFileSize/.. не то, что на самом деле в файле хранится, а из своего.

А еще можно открыть проекцию файла и заставить контрол работать с ней, начиная от задания ее имени (секции — именованый объект, правда, парсер подсистемы Win32 ее имя не пропустит имхо) и кончая подменой хэндла. Но тут по полной программе CreateRemoteThread/ReadVirtualMemory/WriteVirtualMemory или еще ниже. Можно и в ТОМ процессе создать поток, который бы этим и занимался.

А еще можно открыть NamedPipe и отдать в контрол его (канала) имя; наверное, самый простой вариант, но не факт что будет работать из-за ряда ограничений.
Васкецов Сергей
http://registry.km.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.