查看原文
其他

【技术分享】固态硬盘的Trim还想骗我们多久?

Orichen 天鉴科技 2022-12-10

"

由于固态硬盘的Trim机制,导致文件删除后被清零,再无法进行恢复。这个观点在我们心中早已根深蒂固,今天就与大家讨论讨论被删除的文件到底有没有恢复的可能。

"

SSD即固态硬盘,是一种闪存(NAND Flash)存储设备。与传统的机械硬盘不同,不再使用盘片、磁头组件、音圈电机、主轴电机等物理部件,而是以纯电路的形式进行数据记录。也正因如此无论是性能、功耗等方面和机械硬盘有很大不同。


(图片来自网络)


如今固态硬盘基本成为了电脑的标配,就连传统机械硬盘厂商的两大巨头公司希捷(ST)和西数(WD)也在固态硬盘方面发力,推出了自家的固态硬盘。固态硬盘完全替换传统机械硬盘也许真的只是时间的问题。


固态硬盘的性能和优势无需多言,开机速度由几十秒提升到了几秒,杀毒软件提示击败全国99%的用户。这也让一部分老电脑原地“满血复活”;同时在拷贝文件时再也不用一直盯着拷贝文件时候的进度条了,可能眨眼间就完成了。


但是在固态硬盘诸多优势和便捷前有一个非常严峻问题,那就是一旦开启了Trim之后(默认开启),删除或者丢失的文件在底层被“填00覆盖”。再也无法像机械硬盘一样进行数据恢复了。


当然开启Trim也是有条件的。第一,固态硬盘的主控必须支持Trim指令(绝大部分主控都支持);第二,操作系统需是Windows7及以上。满足以上两个条件则可以开启Trim功能。那么对于没有Trim功能之前的固态硬盘而言数据删除同机械硬盘一样,仅在底层进行删除标记,但其数据区内容在数据覆盖前并不会发生改变,所以可以使用数据恢复软件很轻松的将文件进行恢复。但是不幸的是Trim还是来了。


Trim是一个ATA指令,在NVMe里叫Deallocate。可以说是专为固态硬盘而生的。当用户删除一个文件时,操作系统会发出Trim指令给固态硬盘,目的是告诉固态硬盘该文件无效了,可以进行“清零”彻底删除了。当SSD接到Trim指令后便会对数据进行“清零”操作,这是我们可以直观看到的,做个实验,下图中当删除某一个文件之后,利用数据恢复软件定位到该文件后,该文件的数据区全为00


 

图中可以清楚的看到,在软件中文件被标记为删除,但是其数据区全为00。能看到文件的删除标记,说明其MFT项在文件系统底层是存在的,只是对应的数据区被00覆盖填充。


至此就是我们对固态硬盘文件删除后的全部认知,总结一下就是固态硬盘一旦开启了Trim那么删除后的文件就会被清零且彻底无法恢复。以上结论通过简单的实验也得到了证实,属实无误。


但如果确实如此那么这篇文章也就失去了意义。在这里小编想说的是,我们被骗了!我们真的被骗了!先来看实验。


硬盘信息:
品牌
七彩虹
接口类型
SATA
容量
256GB
颗粒数量
2
操作系统
Windows10专业版
分区类型
NTFS



01STEPS  安装操作系统


(确保操作系统是Windows7及以上)实验环境为Windwos10专业版;


 


02STEPS  格式化测试分区


本实验分区选择非操作系统分区,为了避免删除的数据在系统盘被系统文件覆盖影响实验效果;



03STEPS  验证电脑是否开启Trim


fsutil behavior query disabledeletenotify。如果返回值为0,表示开启了Trim)


 


04STEPS  存入测试数据


并对其中一部分文件进行删除(为了实验效果,存入了多种类型的文件)


 



05STEPS  删除


删除后,立刻在U盘中运行数据恢复软件,查看被删除的数据的状态(此时发现底层已被填00);



06STEPS  将电脑关机重新启动


再次运行数据恢复软件查看数据状态,此时数据底层依旧为00。至此我们暂且认为由于硬盘开启了Trim,所以文件删除后永久丢失了。



07STEPS  短接


将硬盘通过短接的方式进入ROM模式进行固件加载。





08STEPS  dump回读


通过工厂软件(软件来自网络),对数据进行dump回读,镜像重组。




09STEPS  分析


分析回读的dump查看文件底层删除情况。


(如图重组镜像为disk.bin)



实验结束了,我们总结一下看到的现象和结论。首先直观可见的是,文件被删除后,通过恢复软件查看文件底层确实被00覆盖填充,在我们的认知中是不可能被恢复了。然而通过工厂工具对硬盘进行dump回读,然后分析回读镜像时发现被删除的文件其实并没有被清00,并且完全可以正常恢复出来。



结论

电脑开启Trim的情况下,
当文件被删除,
操作系统会向硬盘发送Trim指令告知。
就在此时,
硬盘的主控开始对操作系统进行“欺骗”

也就是说主控返回给操作系统的

确确实实是该文件被清零删除了,

但其实主控此时并没有向硬盘发送Trim。

所以文件底层的数据还未被清零!



 

对于一个文件来说,用户直观看到的是文件本身,而进行数据存储的时候会将文件分割成若干个数据块存入硬盘。而删除过程其实只是用户层与操作系统层的联系丢失了,所以用户无法再进行地址访问。而在硬盘内部,逻辑块、数据块之间的联系依旧存在。


(注:目前这种方法适用于慧荣主控,主控型号SM2258XT、SM2259、SM2246。采用以上三种主控的硬盘,均可尝试恢复被删除的数据。使用工厂工具这种方法不需要拆存储颗粒即可回读镜像。操作简单,如果遇到其他主控,在没有工具的情况下,则只能通过拆存储颗粒的方式尝试恢复删除的数据。当然就需要借助PC3000 Flash、ruSolut、Flash Extractor等专业Flash恢复工具进行重组分析。)


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存