2009-07-10 11 views
14

J'essaie de créer un petit programme qui pourrait intercepter le processus ouvert d'un fichier. Le but est quand un utilisateur double-clique sur un dossier dans un dossier donné, Windows informerait le logiciel, alors il traite cette pétition et renvoie les fenêtres du dossier.Fenêtres d'interception ouvrir le fichier

Peut-être qu'il y aurait une autre solution comme surveiller les messages ouverts et forcer Windows à attendre pendant que le programme prépare le contenu du fichier.

Une application de ce concept pourrait consister à gérer le désencodage d'un fichier de manière transparente pour l'utilisateur. Dans ce contexte, le fichier crypté serait sur le disque et lorsque l'utilisateur l'ouvrirait (en double-cliquant dessus ou avec une application telle que le bloc-notes), le processus d'arrière-plan intercepterait cet événement ouvert, désencrypterait le fichier contenu de ce fichier à l'application de demande.

C'est un concept un peu étrange, ça pourrait être comme le concept de réseau "Man In The Middle", mais avec des fichiers au lieu de paquets réseau.

Merci d'avoir lu.

Répondre

10

La meilleure façon de le faire pour couvrir tous les cas d'ouverture de n'importe quel programme serait via un file system filter driver. Cela peut être trop complexe pour vos besoins.

+0

Où pourrait-on trouver des informations sur un tel pilote? – Geo

+0

J'ai lié à la page MS qui a beaucoup de ressources et d'informations. –

+0

logiciel anti-virus, le chiffrement à la volée/compression et plus est construit de cette façon en passant. –

0

Windows dispose d'une option permettant de chiffrer les fichiers sur le disque (fichier-> properties-> advanced-> encrypt) et cette option est totalement transparente pour les applications.

Peut-être que pour crypter des parties de fichiers déchiffrer un disque, vous devriez considérer des logiciels comme criptainer?

Il ya aussi ce logiciel http://www.truecrypt.org/downloads (gratuit et open source) mais je ne l'ai pas essayé.

Le développement d'une solution personnalisée semble très difficile.

+0

Ok, vous pouvez le faire en tant que pilote de filtre de système de fichiers mais je ne pense pas que ce soit une solution "viable" ... à moins que vous ayez beaucoup de temps et de compétences :-) et développez quelque chose de très spécifique. –

+0

L'exemple de la crypte était seulement pour illustrer le doute. Je n'ai pas besoin de cryptage du tout :) – HyLian

11

Vous pouvez utiliser l'astuce que Process Explorer utilise pour se remplacer par le gestionnaire de tâches. Fondamentalement créer une clé comme ceci:

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

Si vous remplacez 'taskmgr.exe' avec le nom du processus d'interception. Puis ajoutez une valeur de chaîne appelée 'Debugger' qui a le chemin d'accès à votre exécutable. Par exemple:

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

Chaque processus est exécuté qui correspond au nom de votre processus d'image sera effectivement appelé comme un débogueur pour ce processus avec le chemin du processus réel comme argument.

+0

Je crois que ce serait le meilleur moyen, mais comment pourrais-je l'utiliser pour openfiledialogs? Ouvrir les boîtes de dialogue de fichiers sont en droit comdlg32.dll? –

4

Vous pouvez utiliser l'injection de code et la redirection d'API. Vous démarrez votre processus cible, puis injectez une DLL qui connecte les fonctions de l'API Windows que vous souhaitez intercepter. Vous êtes alors appelé lorsque le processus cible pense qu'il appelle OpenFile() ou autre et que vous pouvez faire ce que vous voulez avant de passer l'appel à l'API réelle.

Google pour «IAT hooking».

Questions connexes