-
-
关于diskflt的单点还原系统原理的一点不明白
-
发表于:
2015-7-28 07:57
4704
-
看雪的各位大神你们好,我最近在研究网上来流传的那份diskflt的单点还原的代码,想把驱动代码自己重新写一份,锻炼一下。由于资质比较愚钝,花了4,5天时间才搞懂了大致整个流程,还有他最基本的bitmap算法,只有一点不太清楚,想来求证一下各位大神:
在寒江独钓中也有类似的代码,只不过他是采用的稀疏文件进行的重定向,而在diskflt中,没有使用稀疏文件,据我的研究发现,他通过bitmap的偏移计算,得到重定向的地址后,直接自己构建了一个irp下发了,也就是说,他交给底层设备去把数据写到了硬盘上。但是这些数据是通过bitmap进行关联寻址的,虽然重启计算机以后,虽然bitmap各位清0了,
但是数据既然写道了硬盘上,不是还存在于硬盘上么?
我是这么理解的,由于水平有限,请各位误喷,就是我们重启后打开比如D盘(这个盘我们进行了保护),ntfs会根据相关信息列举分区保存的文件,由于我们在上次开机写入文件的地址被重定向了,所以上次开机真正要写入的地址的数据是空的,所以ntfs根据真正的地址找不到上次那个文件,而真正被写入数据的重定向的数据,由于在ntfs中没有他相关的文件信息,所以,这部分空间虽然是有数据的,但是ntfs还是认为他是空闲的,下次有数据是可以直接覆盖的。。仅是鄙人遇见,坐等大神高论
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课