Перехватить Windows, открыть файл

Я пытаюсь создать небольшую программу, которая могла бы перехватывать открытый процесс файла.

Цель состоит в том, чтобы, когда пользователь дважды щелкнул файл в заданной папке, окна сообщили об этом программному обеспечению, а затем обработали это ходатайство и вернули окнам данные файла.

Возможно, было бы другое решение, например, мониторинг открытых сообщений и принудительное ожидание, пока программа подготовит содержимое файла.

Одно из применений этой концепции может заключаться в прозрачном для пользователя управлении дескрипцией файла. В этом контексте зашифрованный файл будет находиться на диске, и когда пользователь откроет его (с помощью двойного щелчка по нему или с помощью какого-либо приложения, такого как блокнот), фоновый процесс перехватит это событие открытия, расшифрует файл и выдаст его содержимое. этого файла к запрашивающей заявке.

Это немного странная концепция, это может быть как «Человек в середине». концепция сети, но с файлами вместо сетевых пакетов.

Спасибо за прочтение.

Ответы на вопрос(4)

Лучший способ сделать это, чтобы покрыть все случаи открытия из любой программы, был бы черездрайвер фильтра файловой системы, Это может быть слишком сложным для ваших нужд.

Вы можете использовать внедрение кода и перенаправление API. Вы запускаете целевой процесс, а затем внедряете DLL, которая перехватывает функции Windows API, которые вы хотите перехватить. Затем вас вызывают, когда целевой процесс думает, что он вызывает OpenFile () или что-то еще, и вы можете делать то, что вам нравится, прежде чем передать вызов реальному API.

Google для "перехвата IAT".

В Windows есть опция шифрования файлов на диске (file-> properties-> advanced-> encrypt), и эта опция полностью прозрачна для приложений.

Может быть, чтобы зашифровать части файла на диске, вы должны рассмотреть такие программы, как criptainer?

Есть и эта программаhttp://www.truecrypt.org/downloads (бесплатный и открытый исходный код), но я не пробовал.

Разработка индивидуального решения звучит очень сложно.

Вы можете использовать трюк, которыйProcess Explorer использует, чтобы заменить себя диспетчером задач. В основном создайте ключ как это:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe

Где вы заменяете'taskmgr.exe' с именем процесса для перехвата. Затем добавьте строковое значение'Debugger' это путь к вашему исполняемому файлу. Например:

Debugger -> "C:\windows\system32\notepad.exe"

При каждом запуске процесса, который соответствует имени образа, ваш процесс будет фактически вызываться как отладчик этого процесса с указанием пути к фактическому процессу в качестве аргумента.

ВАШ ОТВЕТ НА ВОПРОС