2009-10-08 5 views
0

Il ya des années, j'ai lu un tutoriel sur la commande Windows DEBUG.Utilisez debug.exe pour restaurer un fichier supprimé

L'article décrit également comment l'outil pourrait être utilisé pour restaurer un fichier supprimé.

Quelqu'un pourrait-il me donner un indice sur la façon dont cela a été fait?

+0

c'est un peu hardcore. Je n'ai jamais entendu parler de déboguer être capable de restaurer un fichier qui a été supprimé. –

+0

Je suis simplement curieux. Une petite expérience basée sur un vague souvenir. Je ne veux pas développer une nouvelle application "UnErase" en utilisant debug.exe: D – vobject

Répondre

1

Il a probablement été utilisé sur un système FAT où la suppression d'un fichier élevé à marquer le fichier comme supprimé dans une table. L'effacement de cette marque a supprimé le fichier (bien sûr, le contenu aurait pu être écrasé entre-temps).

Le même principe est toujours valable dans le cas de NTFS, mais je ne sais pas s'il est possible de modifier les structures NTFS cette façon sans avoir des ennuis.

+0

Oui, cela ressemble à ce dont je me souviens vaguement. J'ai changé un octet (E5?) Quelque part et le fichier est apparu à nouveau. Mais si je dois réinstaller XP sur FAT, je vais abandonner ma petite expérience :) – vobject

1

Avec le débogage, vous pouvez lire et écrire directement à partir du disque dur. C'était une procédure très compliquée et risquée.

Fondamentalement, ce que vous aviez à faire est de trouver l'enregistrement d'amorçage pour localiser la table d'allocation de fichiers (FAT) que vous avez besoin pour vous restaurer le fichier à partir. Ensuite, vous localiser le premier cluster du fichier sur le lecteur ainsi que la taille du fichier à partir des entrées de fichier. Une fois que vous avez connu le premier bloc et la taille, vous espérez que le fichier n'a pas été fragmenté ou écrasé et pourrait simplement extraire l'information là-bas.

Il y avait aussi une application de suppression qui pourrait le faire automatiquement pour vous.

Aujourd'hui, tout cela peut être fait en utilisant :: CreateFile() sur le chemin du volume \\.\C: et en utilisant le handle de :: ReadFile() directement à partir du volume. Le taux de réussite est particulièrement élevé si vous savez exactement à quoi ressemble l'en-tête du fichier, vous pouvez alors très facilement rechercher secteur par secteur pour cet en-tête spécifique et espérer que le fichier n'est pas fragmenté ou écrasé. Ensuite, vous pouvez simplement lire les informations directement à partir du lecteur et le vider dans un nouveau fichier. Il n'est pas nécessaire de manipuler le système de fichiers.

Si le fichier est fragmenté avant la suppression, il est probablement parti pour de bon parce que vous n'avez plus les informations pour localiser toutes les références du fichier, sauf peut-être le premier groupe.

Questions connexes