查看: 5849|回复: 18
收起左侧

[讨论] 直接访问底层磁盘的意义在意什么?

[复制链接]
JAYSIR
发表于 2017-5-1 20:06:47 | 显示全部楼层 |阅读模式
2017/5/1         C:\Program Files (x86)\Thunder Network\Thunder\Program\XLLiveUD.exe        依据规则:拦截        Behavior.DirectDiskAccess        

2017/5/1         C:\Program Files (x86)\Thunder Network\XMP\V5.2.18.5890\Bin\XMP.exe        用户判断:拦截一次        Behavior.DirectDiskAccess        

这里有人讨论过
一般的解释:绕过操作系统直接对硬盘进行读写操作。在我看来,这个解释基本上是正确的。为什么说基本上呢,因为不太准确,因为任何程序要运行,都建立在一定的操作系统之上,我们使用的任何软件都是基于这些或其他系统的,从来没有那个软件是在裸机上运行的。比如常用的维修系统DOS和WindowPE,尽管小巧,但也是个系统。但这就有问题了,既然任何软件都要在一定的系统上运行,为什么有的软件还能绕过系统对磁盘进行操作呢?那就是只有一个解释:这个软件里包含微内核操作系统源码。简单的说,这个程序内置了一个微系统,比如:mlxos是一个微内核操作系统源码,短小精焊,C++语言,包含这个微系统源码的软件就可以获取系统多种硬件的序列号,包括:网卡、硬盘(IDE和SCSI)、CPU和BIOS。当然,这个软件本身也不能脱离操作系统独立运行。这样一来我们可以这样解释这个概念:
所谓的直接访问磁盘就是不通过Windows文件管理的方式,而采用微系统源码(或类似代码)的方式对磁盘扇道直接进行读写操作。


http://bbs.kafan.cn/thread-1339107-1-1.html


请问,这个底层磁盘权限的意义是什么?

我禁止了也不影响我的下载,plantform那个程序的确影响到下载,速度也没有变慢。查了下这个权限可以读取硬盘中存放文件各种属性信息的数据结构。

那么这个东西的比起普通的访问有什么优势?迅雷这中软件有必要用这种权限吗?防碎片化吗?

fireherman
发表于 2017-5-1 20:26:23 | 显示全部楼层


底层磁盘权限

我的理解是:不经过系统,直接读取磁盘数据

有什么用呢?


通常……通常最大的3个用途:

1,读取分区表:一个硬盘会被分成多个区域,以MBR为例;例如把一个文件从C盘(C区)复制到D盘(D区),这种操作是需要经过系统的(不管是Windows还是OS还是……巴拉巴拉),Windows就是需要桌面管理器去完成。

但有些时候,电脑在通电后还没进入系统(例如重启),就需要这种直接磁盘访问来完成资源的分配;就好比告诉系统:我把硬盘分了多少个区(我把房子分隔了多少个房间)。


2,读取硬件数据,例如磁盘的温度,就需要直接读取磁盘底层数据;Windows系统毕竟只是“软件”,它并不知道现实的世界发生什么事,无法感知“硬件”物理情况。




3,使用“硬盘缓存”;作为和“虚拟内存”、“磁盘缓存”(物理内存)完全不同的缓存,可以加快数据的读取,降低物理磁盘的读写。




PS:说错了……请不要打脸,因为偶就是靠脸混饭吃的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
pal家族
发表于 2017-5-1 21:19:23 | 显示全部楼层
fireherman 发表于 2017-5-1 20:26
底层磁盘权限

我的理解是:不经过系统,直接读取磁盘数据

请问没有说错可不可以轻轻地打一下脸?
就一下,
轻轻地
nazisoft
发表于 2017-5-1 21:26:59 | 显示全部楼层
直接读写磁盘可以提升程序的访问效率
fireherman
发表于 2017-5-1 21:32:29 | 显示全部楼层
pal家族 发表于 2017-5-1 21:19
请问没有说错可不可以轻轻地打一下脸?
就一下,
轻轻地



不行!吻一下倒可以。

pal家族
发表于 2017-5-1 21:33:24 | 显示全部楼层
fireherman 发表于 2017-5-1 21:32
不行!吻一下倒可以。

mua(*╯3╰)
ccboxes
发表于 2017-5-1 22:46:04 | 显示全部楼层
本帖最后由 ccboxes 于 2017-5-1 23:08 编辑

先吐槽:红字是什么JB玩意儿,我当时要是在就直接开喷了。
吐槽结束。

底层磁盘访问和底层文件系统访问经常在一起说,意义也很大,并不是只有病毒才会使用,我这里定性说说。文件系统我就不科普了,自己搜搜。

先说明,并不存在所谓绕过系统,底层磁盘访问也是系统内核提供的一项功能,有明确的API供程序调用。只不过需要的权限较高。

一般来说,存储器是由Win统一管理,流程是程序调用API设定我需要某文件夹下的某文件,是要读写还是创建删除,要不要加锁等等一系列参数,然后系统把文件内容放进一块内存页A里,然后程序就按需求操作A中的数据,操作完了再调用API让系统把A中的东西覆盖回去。很简单。在这个过程中,程序只接触了内存页A,不知道这个文件究竟放在硬盘哪几个扇区,也不知道存放的顺序,一切都由Win来打理。

一般来说,这样做是最快、最可靠的办法。但这样做并不能解决所有需求。

首先,这种方式在少数特定场合效率不够高,再次是有些需求实现不了(比如文件系统级的隐藏),最后是受到系统自身和其他程序的约束,系统不让你访问的东西(系统文件、MBR等等),你碰不到;其他程序正在访问的文件,你碰不到。所有有些程序会使用底层磁盘访问来满足需求。

举两个例子:

Everything作为一个阉割版的搜索工具,Everything只需要知道磁盘上所有文件名是什么就可以了,这时候再调用普通API让系统一个个查找文件,列出文件名其需要的时间非常恐怖,Everything的做法是使用底层磁盘访问,不去查找具体的文件,而是读取位于磁盘固定位置的USN日志(NTFS文件系统记录哪个文件在哪的一段数据),来列出文件名。在这个过程中,Everything不是去申请某个文件,而是明确告诉系统我需要读取磁盘X第XX扇区到第XX扇区的数据。这也是Everything需要管理员权限的原因。

迅雷作为下载工具,需要解决存放下下来的东西的问题。比如下一个8G的电影,不可能等到下完再一次放到硬盘里,就只能每几十MB就放一次,如果使用通常的方法,先创建一个小文件,每下几十MB就修改一次这个文件,把它“撑大”,数据往往会分散到硬盘的各个角落(这时迅雷并不能控制数据被放到了哪里),对磁盘会造成相当大的负担,会有碎片化的问题,也可能因为占用I/O过大引起系统卡顿。所以迅雷会一次创建一个8G大的缓存文件,通过底层磁盘访问明确这个文件占用的扇区是哪些。在下载时,直接把数据写入到对应扇区。下载完后更改文件类型即可,效率更高。





ccboxes
发表于 2017-5-1 22:46:44 | 显示全部楼层
本帖最后由 ccboxes 于 2017-5-1 23:10 编辑
nazisoft 发表于 2017-5-1 21:26
直接读写磁盘可以提升程序的访问效率

大部分情况下没有优势,甚至会慢。
fireherman
发表于 2017-5-2 08:33:37 | 显示全部楼层
本帖最后由 fireherman 于 2017-5-2 08:55 编辑
ccboxes 发表于 2017-5-1 22:46
先吐槽:红字是什么JB玩意儿,我当时要是在就直接开喷了。
吐槽结束。

对磁盘会造成相当大的负担,会有碎片化的问题,也可能因为占用I/O过大引起系统卡顿

大侠,红色字应该是不对的吧……

这种先创建同等体积文件(空文件)作为预留空间的底层磁盘访问,正正是因为直接写入扇区,所以下载下来的数据必然是“碎片文件”(没有经过系统进行排序);以eMule为例:



如果下载目录和临时目录(创建缓存文件的目录)放在同一个盘(区),那么下载回来的文件必然是“碎片”:同一个盘(区)的文件“移动”,系统并不会对数据进行重新排序(所以会出现“秒移”的情况):

例如下载了一个4GB的文件123.mp4,从D:\abc 移动到 D:\xyz,是直接“秒移”,因为存放的磁道不变。(但123.mp4在D盘就是个碎片文件)

但是把下载后的4GB的文件123.mp4,从D:\abc 移动到 E:\abc,就不能“秒移”了,老老实实地出现了“移动文件的进度条”(如果是机械硬盘,还很慢),因为存放的磁道已经改变了,且经过系统进行了数据排序。(123.mp4在E盘不是个碎片文件)


所以,后一种情况(如上图里【下载目录和临时目录】设置在不同盘(区))才不会出现碎片。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1人气 +1 收起 理由
HEMM + 1 喵~

查看全部评分

ccboxes
发表于 2017-5-2 09:25:17 | 显示全部楼层
fireherman 发表于 2017-5-2 08:33
对磁盘会造成相当大的负担,会有碎片化的问题,也可能因为占用I/O过大引起系统卡顿

大侠,红色字应该 ...

不一样。

要下一个8G的文件,迅雷会在下载前就在下载目录直接创建一个8G大小的文件(数据填零),然后在下载的过程中把下下来的数据覆盖进这个文件所占的扇区,本质上相当于你说的第二种情况。

评分

参与人数 2人气 +2 收起 理由
fireherman + 1 欺负人家不用迅雷,真坏 :)
HEMM + 1 喵~

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-23 15:58 , Processed in 0.126480 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表