使用debug.exe还原已删除的文件

时间:2009-10-08 00:55:36

标签: assembly debugging

多年前,我阅读了有关Windows DEBUG 命令的教程。

文章还介绍了如何使用该工具恢复已删除的文件

有人能给我一个暗示这是怎么做的吗?

2 个答案:

答案 0 :(得分:1)

它可能用于基于FAT的系统,其中删除文件等于将文件标记为在表中删除。清除该标记会取消删除该文件(当然,内容可能已被同时覆盖)。

同样的原则仍适用于NTFS,但我不知道是否可以这样改变NTFS结构而不会遇到麻烦。

答案 1 :(得分:1)

通过调试,您可以直接从硬盘读取和写入。这是一个非常复杂和危险的程序。

基本上,您需要做的是找到引导记录以找到恢复文件所需的文件分配表(FAT)。然后,您将在驱动器上找到文件的第一个集群以及文件条目中文件的大小。一旦你知道了第一个块和大小,你就会希望文件没有碎片或被覆盖,并且可以简单地在那里提取信息。

还有一个取消删除的应用程序可以自动为您执行此操作。

今天,所有这一切都可以在卷路径\\.\C:上使用:: CreateFile()并直接从卷使用:: ReadFile()句柄来完成。如果您确切地知道文件头是什么样的,那么成功率尤其高,那么您可以非常轻松地逐个扇区地搜索该特定标头,并希望该文件不会被分段或覆盖。然后,您可以直接从驱动器中读取信息并将其转储到新文件中。没有必要摆弄文件系统。

如果文件在删除之前被分段,那么它可能会消失,因为你不再拥有找到所有文件部分的信息,除了第一个集群。