2010-09-28 40 views
0

J'ai un programme exécutable qui envoie des données au disque dur, par ex. C: \ documents.Intercepter les sorties d'un programme sous Windows 7

J'ai besoin de moyens pour intercepter les données dans Windows 7 avant qu'elles n'atteignent le disque dur. Ensuite, je vais crypter les données et les renvoyer sur le disque dur. Malheureusement, le fichier .exe ne prend pas en charge la commande de redirection, c'est-à-dire> dans l'invite de commande. Savez-vous comment je peux réaliser une telle chose dans n'importe quel langage de programmation (c, C++, JAVA, php).

Le cryptage ne peut être effectué que avant les données en clair sont envoyées au disque après.

Toutes les idées sont les bienvenues. Merci

Répondre

0

Ceci est pratiquement impossible en général. De nombreux programmes écrivent sur disque à l'aide de fichiers mappés en mémoire. Dans un tel schéma, une plage de mémoire est mappée à (une partie de) un fichier. Dans un tel schéma, les écritures au fichier ne peuvent pas être distinguées des écritures en mémoire. Une instruction comme p[OFFSET_OF_FIELD_X] = 17; est une écriture logiquement dans le fichier. En outre, le système d'exploitation gardera trace de la synchronisation de la mémoire et du disque. Toutes les écritures logiques en mémoire ne sont pas directement traduites en écritures physiques sur le disque. De temps en temps, au gré du système d'exploitation, les pages de mémoire corrompues sont copiées sur le disque.

Même dans le cas le plus simple de CreateFile/WriteFile, il y a peu de place pour intercepter les données à la volée. Le plus proche que vous pourriez réaliser est l'utilisation de Microsoft Detours. Je connais au moins un programme d'encodage de serpent (WxVault, crapware expédié sur Dells) qui fait cela. Il a écrasé à plusieurs reprises mon application sur le terrain, ce qui explique pourquoi mon programme libère toute tentative d'interception de données à la volée. Donc, pas même de tels hacks sont robustes contre les programmes qui n'aiment pas les interférences.