Windows下文件删除原理

 
    如果只能使用Windows本身提供的工具,那么我们可以认为清空回收站之后,被删除的档已经彻底清除了。不过事实并非如此,只要有专用的硬件和软件,即使数据已经被覆盖、驱动器已经重新格式化、引导扇区彻底损坏,或者磁盘驱动器不再运转,我们还是可以恢复几乎所有的档。下面我们就来看看,这到底是怎么回事! 
    本文主要内容 
    一、磁盘如何保存数据 
    二、Windows不能真正清除檔 
    三、覆盖七次才能清除的蛛丝马迹 
    四、被遗忘的角落 

      一、磁盘如何保存数据 
      要理解如何恢复已删除的数据,首先要搞清楚磁盘如何保存数据。硬盘驱动器里面有一组盘片,数据就保存在盘片的磁道(Track)上,磁道在盘片上呈同心圆分布,读/写磁头在盘片的表面移动访问硬盘的各个区域,因此文件可以随机地分布到磁盘的各个位置,同一文件的各个部分不一定要顺序存放。 
      存放在磁盘上的数据以簇为分配单位,簇的大小因操作系统和逻辑卷大小的不同而不同。如果一个硬盘的簇大小是4 K,那么保存1 K的档也要占用4 K的磁盘空间。大的档可能占用多达数千、数万的簇,分散到整个磁盘上,操作系统的文件子系统负责各个部分的组织和管理。 
      当前,Windows支持的硬盘文件系统共有三种。第一种是FAT,即所谓的文件分配表(File Allocation Table),它是最古老的文件系统,从DOS时代开始就已经有了。Windows 95引入了第二种文件系统,即FAT 32,Windows NT 4.0则引入了第三种文件系统NTFS。这三种文件系统的基本原理都一样,都用一个类似目录的结构来组织文件,目录结构包含一个指向文件首簇的指针,首簇的FAT入口又包含一个指向下一簇地址的指针,依此类推,直至出现文件的结束标记为止。

      二、Windows不能真正清除檔 
      在Windows中,如果我们用常规的办法删除一个档,档本身并未被真正清除。例如,如果我们在Windows资源管理器中删除一个文件,Windows会把档放入回收站,即使我们清空了回收站(或者不启动回收站功能),操作系统也不会真正清除文件的数据。 
      Windows所谓的删除实际上只是把文件名的第一个字母改成一个特殊字符,然后把该文件占用的簇标记为空闲状态,但文件包含的数据仍在磁盘上,下次将新的档保存到磁盘时,这些簇可能被新的档使用,从而覆盖原来的数据——因此,只要不保存新的档,被删除文件的数据实际上仍旧完整无缺地保存在磁盘上。 
      因此,我们可以用工具软件绕过操作系统,直接操作磁盘,恢复被删除的档。这类工具软件很多,EasyRecovery就是其中的佼佼者。 
    如果不小心删除了某个重要文件,想要恢复,这时千万不要覆盖它。立即停用计算机,不要再向磁盘保存任何档,包括不要把恢复工具安装到已删除文件所在的硬盘,因为任何写入磁盘的内容都有可能覆盖已删除档释放的磁盘簇。如果必须安装恢复工具,可以安装到其他硬盘分区、软盘,或者干脆拆下硬盘到另一台机器上去恢复。 

    三、覆盖七次才能清除的蛛丝马迹 
      如果数据已经覆盖,用通常的恢复工具就无能为力了,但这并不意味着我们绝对不能挽救丢失的数据。读取硬盘上被覆盖的数据通常有两种办法。 
      读/写磁头向磁盘写入数据时,它会将磁化数据位的信号调整到某个适当的强度,但信号不是越强越好,不应超出一定的界限,以免影响相邻的数据位。由于信号强度不足以使存储媒介达到饱和的磁化状态,所以实际记录在媒介上的信号受到以前保存在同一位置的信号的影响,例如,如果原来记录的数据位是0,现在被一个1覆盖,那么实际记录在磁盘媒介上的信号强度肯定不如原来数据位是1的强度。 
      专用的硬设备能够精确地检测出信号强度的实际值,将这个值减去当前数据位的标准强度,就得到了被覆盖数据的副本。理论上,这个过程可以向前递推七次,所以如果要彻底清除文件,必须反复覆盖数据七次以上,每次都用随机生成的数据覆盖。 
      第二种数据恢复技术的依据是,磁头每次读/写数据时,不可能绝对精确地定位在同一个点上,写入新数据的位置不会刚好覆盖在原来的数据上。原有数据总是会留下一些痕迹,利用专用的设备可以分析出原有数据的副本——称为影子数据。当然,如果我们反复执行覆盖操作,原有数据的痕迹也会越来越弱。 
      ● 影子数据:被覆盖的数据总是与新写入的不离左右,就像人的影子总是紧跟着人,因此被覆盖的数据就称为影子数据。英文功力好的读者可以参见这篇专著:http://www.forensics-intl.com/art15.html。 
      通常而言,能够恢复已删除、覆盖的数据应该算是一件好事,当然,某些必须彻底清除数据的场合除外。这方面最为著名的标准是美国国防部订立的磁盘清洗规范,它要求数据必须覆盖三次:第一次用一个8位的字符覆盖,第二次用该字符的补码(0和1全反转的字符)覆盖,最后用一个随机字符覆盖。不过这个清洗方法不适用于包含高度机密信息的媒介,这类媒介必须进行消磁处理,或者销毁其物理载体。当然,对于大多数场合来说,简单的覆盖处理已经足够。 


      四、被遗忘的角落 
      删除和覆盖档还不能清除硬盘上的所有敏感数据,因为数据可能隐藏在某些意料之外的地方,所以档占用的每一个扇区都必须彻底清洗——所谓扇区,就是大小为512字节的数据片断,每个簇包含多个扇区。 
    向磁盘写入档时,档的最后一部分通常不会恰好填满最后一个扇区,这时操作系统就会随机地提取一些内存数据来填充空余区域。从内存获取的数据称为RAM Slack(内存渣滓),它可能是计算机启动之后创建、访问、修改的任何数据。另外,最后一个簇中没有用到的扇区就原封不动,即保留原来的数据,称为Drive Slack(磁盘渣滓)。问题在于许多号称安全删除档的工具不会正确清除内存渣滓和磁盘渣滓,而这些被称为渣滓的地方却可能包含大量的敏感信息。 
    在NTFS文件系统中,每个文件包含多个流,其中一个流用来保存访问权限之类的信息,另一个流用来保存真正的文件数据。除此之外,NTFS还允许额外的数据流,即ADS(Alternative Data Stream),ADS可以用来保存任何信息,最常见的用途是保存图形文件的缩略图。由于许多安全删除档的工具不能清除ADS,所以即使存放文件实际数据的流已经清除,但缩略图仍可能泄露机密。微软知识库文章319300(http://support.microsoft.com)介绍了如何防止系统创建缩略图使用的流,即删除注册键HKEY_LOCAL_MACHINE\System\Currentcontrolset\Control\Contentindex\FilterTrackers。
     
     ●ADS :ADS这个缩写词经常用来表示活动目录服务(Active Directory Services),不过本文中ADS是指「可选数字流」,是文件主体数据之外的附属信息存储区域。就像你的公文包,包里面是正式存放物品的主空间,但包的外面还会有一二个附属小口袋便于快速取用物品,这些小口袋就相当于ADS。 
      ADS已是人们熟知的隐藏数据和病毒之地,经常被计算机犯罪分子利用。但除此之外,硬盘上还有其他可以隐藏数据的区域。 
      扇区是在低级格式化期间创建的,通常由硬盘制造厂完成。低级格式化工具会标记出损坏的扇区,从而避免磁盘控制器向损坏的区域写入数据。簇包含多个扇区,由高级格式化工具创建,如Windows或DOS的format命令。如果高级格式化期间发现坏扇区,整个簇被标记为坏簇,但是,坏簇里面还有好的扇区,有些人就利用这些扇区来隐藏数据。 
      在老式磁盘上,数据还可以隐藏在称为扇区缝隙的地方。老式磁盘的每一个磁道都有数量相同的扇区,但外圈的磁道显然要比内圈的磁道长,有些人就利用外圈磁道上扇区之间的缝隙来保存数据。新型磁盘利用一种称为分区记录(Zoned Recording)的技术避免了这种空间浪费,它能够根据磁道的位置调整每个磁道的扇区数量。 
      要访问磁盘上的这类隐藏区域,必须使用绕过操作系统磁盘访问功能的工具。搜索一下网络,可以看到正规的专业工具都很昂贵,例如EnCase Forensic Editionwww.guidancesoftware.com)要2000多美元;Directory Snoop可能最便宜,也要29美元,但它不支持NTFS。 
      综上所述,我们可以说恢复数据实际上要比彻底清除数据简单。如果你不小心删除了某个重要的文件(谁都会遇到这类事情),恢复工具就是救命的稻草。反之,如果你想出售二手机或二手磁盘,应当考虑一下是否有必要彻底地清洗一下硬盘。
    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您更进一步的理解Windows上各类程序的工作方式和如何进行错误诊断及性能优化。 本次课程的内容编排得到了国内知名技术作家,《Windows Internals》一书的中文译者,潘爱民先生的大力支持,同时TechNet也邀请到了众多微软一线技术专家进行讲解。这是一个为IT专业人员量身定做的Windows内部知识课程,在介绍原理的同时,也紧密地围绕实际案例和常见的故障进行分析点评。这是一个系统的学习Windows底层工作机制的好机会,课程内容深入浅出,精彩纷呈,绝对不容错过。 深入研究Windows内部原理系列之一:Windows的昨天、今天和明天 讲师信息:潘爱民 2007年01月25日 14:00-15:30 Level: 300 著名技术作家、微软亚洲研究院研究员潘爱民老师将在这次课程中跟听众分享Windows的发展历程和技术精萃,描绘操作系统的体系架构、Vista的内核变更以及今后版本Windows的发展趋势。 深入研究Windows内部原理系列之二:Windows体系结构-从操作系统的角度 讲师信息:张银奎 2007年01月26日 14:00-15:30 Level: 400 操作系统是计算机系统的灵魂和管理中心,也是软件系统中最复杂的部分。本讲座将以生动的讲解和丰富的演示带您领略Windows操作系统的核心架构和主要组件,包括HAL、内核、执行体、系统进程(IDLE、SMSS.EXE、WinLogon.EXE)和Windows子系统(CSRSS.EXE、WIN32K.SYS以及子系统DLL)等。并讨论中断管理、对象管理、和异常分发等系统机制和实现这些机制的基本数据结构。 深入研究Windows内部原理系列之三:Windows体系结构-从应用程序的角度 讲师信息:曾震宇 2007年01月29日 14:00-15:30 Level: 400 从服务器软件到Office办公应用,从联网游戏到即时消息,不管这些应用的复杂程度如何,他们都是一个个在操作系统控制和管理之下的可执行程序。本次课程邀请微软全球技术中心专家级工程师,为各位讲解一个程序是如何经历从启动、分配资源、运行、结束这一连串的过程,并且介绍其中的重要概念和排错诊断技巧。 深入研究Windows内部原理系列之四:Windows操作系统中的重要基本概念 讲师信息:高宇 2007年01月30日 14:00-15:30 Level: 400 进程、线程、资源分配、内存管理、Win32 API、服务、安全,这些是工作中常常提及但是又无法深入理解的神秘概念。在这次课程中,讲师将介绍Windows中最常见与最重要的一些基本概念. 使大家能够顺利地参与到本系列之后的讨论中去。 深入研究Windows内部原理系列之五:Windows Sysinternals工具集介绍 讲师信息:彭爱华 2007年01月31日 14:00-15:30 Level: 400 Sysinternals Suite(Windows Sysinternals工具集)包含一系列免费的系统工具,其中有大名鼎鼎的Process Explorer、FileMon、RegMon等(在Windows Vista下,FileMon和RegMon则被Process Monitor所代替),如果把系统管理员比喻成战士的话,那么Sysinternals Suite就是我们手中的良兵利器。熟悉和掌握这些工具,并且对Windows的体系有一定的了解,将大幅度的提高日常的诊断和排错能力。本课程将以任务驱动的模式,介绍几个经典的应用案例,来介绍Sysinternals Suite的强大功能。 深入研究Windows内部原理系列之六:Vista新特性底层揭秘 讲师信息:彭爱华 2007年02月01日 14:00-15:30 Level: 400 Windows Vista绝非仅仅是具有诸如3D切换、毛玻璃等炫目的界面效果,花钱购买了Windows Vista,而仅仅为了使用其界面效果,难免有点“买椟还珠”的感觉。实际上Windows Vista值得称道的是它具有很多全新的安全特性,例如用户帐户控制、IE保护模式、服务隔离和Windows资源保护等等。有了这些全新的安全特性,我们就可以在相当的程度上摆脱恶意软件的滋扰。Windows之父Jim Allchin曾经说过不要满足于只知道How-to、小技巧之类的知识,而是应该深入底层了解其内部原理。只有了解了这些安全特性的内在原理,才
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值