揭开NTFS下流的奥秘

NTFS下,支持一个特殊概念,那就是'流'.怎么个流法呢?先看'流'的定义:

stream

A sequence of bits, bytes, or other small structurally uniform units.

BIT的序列,或者小的统一结构单元.当然,小的统一结构单元并不意味着一定要大小统一,格式统一.

流依附于文件而存在,你可以在流中存储2进制数据,文字或者其他一些东西.就象文件一样.文件存什么,流就能存什么.每个文件可以含有多个流.但是流又和文件有些不同.每个流的打开需要单独的一个CreatFile(...)操作,并不是打开文件就打开了流.

流的名字和文件名以':'分隔.例如:ABC:A.

ABC就是文件名,而流的名字为A.当我们操作流时,可以用如下简单方法:

ECHO STREAM1>ABC:STREAM1

ECHO STREAM2>ABC:STREAM2

现在,ABC就有了:STREAM1和:STREAM2共2个流.

而读出流可以用:

MORE <ABC:STREAM1

MORE <ABC:STREAM2

这样,内容就被读出了.CreateFile("ABC:STREAM1",...);

如果用编程的方法.操作就和文件操作一样.

那么为什么要用流呢?流的好处就是隐蔽.WINNT没有任何一个工具用来发现流的存在.我们看

C:\>ECHO "Hi Reader" > XX.TXT:MyStream
C:\>DIR XX.TXT
Volume in drive C is Wizard
Volume Serial Number is 40E5-92D4
Directory of C:\
03/18/98 08:36a           0 XX.TXT
         1 File(s)       0 bytes
         0 Dir(s)  3,399,192,576 bytes free

这就是好处.所以,在绿色兵团里有一篇文章专门介绍了流.说是一种隐藏很深的文件存取格式.

的确深,但是NT只不过没有提供工具而已.而我们仍然有探测到流的存在.那就是,Inside Programming为大家提供的Stream.Exe.该工具可以看到含有流的文件以及所有的流的名字.

当然,NT提供一个API,BackupRead(...)用于流名的读出.既然是Inside Programming,介绍这个API显然不能提供更多帮助,接下来介绍的是一个NATIVE API:NtQueryInformationFile(...)

下面给出该API涉及流的部分:

/*+++
Streaminfo.h
author: lulin
date: 2000.8.25
Abstract:
interface to NtQueryInformationFile
stream portion.
---*/
#ifndef __STREAMINFO_H__
#define __STREAMINFO_H__
#include <windef.h>
extern "C"{
typedef LONG NTSTATUS;
typedef struct {
   union {
     NTSTATUS Status;
     PVOID Pointer;
   };
   ULONG *Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef struct { //infoclass 22
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER EndOfStream;
LARGE_INTEGER AlloCationSize;
WCHAR StreamName[1];
}FILE_STREAM_INFORMATION,*PFILE_STREAM_INFORMATION;
__declspec(dllimport) NTSTATUS __stdcall NtQueryInformationFile(
HANDLE handle,
PIO_STATUS_BLOCK io_status_block,
PVOID FileInFormation,
ULONG FileInformationLength,
int FileInfomationClass
);
}
#endif //__STREAMINFO_H__

NTFS真正存储流名时,名字里会加上:$DATA,例如:ABC:STREAM1在存储时,流名被存为了:STREAM1:$DATA,所以在查询结果中需要去除:$DATA.在这里,我不详细讨论STREAM.EXE如何运作

时间: 2024-09-20 05:40:00

揭开NTFS下流的奥秘的相关文章

“宝拉”快跑!阿里云发布超高性能云数据库POLARDB

老孙看过一部很有意思的德国电影,叫做<罗拉快跑>,故事讲得是为了筹集男票遗失的走私赃款,拯救他随时会被黑帮大哥杀死的性命,罗拉必须在20分钟内得到10万马克,于是她狂奔在求助的路上,完成了几乎不可能完成的任务.而这部制作成本只有两百万美金的电影,其在全球票房收入已经突破一亿美金,被电影界视为新时期德国电影的复兴之作. 而就在昨天,阿里云正式推出了名为"宝拉"(POLARDB)的云数据库产品,也狂奔在性能的大路上.在实测跑分上,POLARDB读写性能均超越同级产品,读性能实现

在数据里忘记思考,拿什么度过资本寒冬

文章讲的是在数据里忘记思考,拿什么度过资本寒冬,走多远取决于你对市场的破坏力,走多快取决于你的增长策略和创造力,要么像大公司一样任性烧钱,要么就学会理智分析. 前段时间在一家创业公司的融资发布会上,有幸听到了被誉为"投资女王"徐新的一段演讲,她提到,这个冬天真的很寒冷,冬天来的时候,活下来就是好样的.然而,这个活下来对什么都缺的创业公司来说,实在是不小的挑战.没什么钱的时候,节约成本是必不可少的,如何可以花小钱办大事,学会运用有价值的数据提升用户体验与用户数量呢?说到这,不少人应该就会

阿里云双11的红包 不拼智商都不行

本文讲的是阿里云双11的红包 不拼智商都不行Geek感满满的阿里云,连一封挑战书都不正经写了-- 阿里云宣布加入天猫11.11全球狂欢节的消息让云计算成为了今年双11最特殊的商品.而随着双11不断升温,IQ爆表的阿里云又使出了特别招数,向全中国程序员发出了一封密码挑战书,宣布破解者就有机会赢得阿里云双11专属1024元红包. 乍一看这封挑战书,英文字母杂乱无章,让人颇摸不着头脑,只想问一句"What are you 弄啥嘞".不过,据阿里云透露,通过精心设计,这封挑战书有三重密码限制,

强生被罚3亿:太过“温柔”

6月7日,美国强生下属公司奥索·麦克尼尔·杨森公司收到了美国南卡罗来纳州法官开出的一份罚单--3.27亿美元.理由是该公司的抗精神病药物"维思通"存在欺骗性广告宣传. 其实,这已不是第一例了.2009年9月,美国制药巨头辉瑞公司因在营销过程中故意夸大药品适用范围受到美国司法部的刑事指控,接受创纪录的23亿美元的罚款.仅因故意夸大适用范围,或者夸大疗效,就受到数亿甚至数十亿美元的罚款,如此不"爱护"企业,不免让"友邦惊诧". 所以"惊诧&

政府资助几十亿,换不来中芯国际向本土IC倾斜

产能紧张,大陆许多微电子公司已经到了无货可卖的时刻,就此话题老杳也曾写过几篇文章,希望从侧面提醒中芯国际的管理层现在到了向大陆微电子客户回报的时刻,之所以如此,老杳认为从成立至今,中芯国际一直打着扶植大陆微电子产业的旗号,单算"核高基"便已经从政府拿了十几亿的基金,现在全球产能紧张,中芯国际没有理由不在关键时刻帮大陆客户一把. 上周由中国半导体行业协会IC设计分会组织,由设计分会秘书长王庍生亲自出面,联合大陆几家主要的IC设计公司与中芯国际执行副总季克非洽谈,希望中芯国际在产能紧张的情

脑科学家:神经科学与大数据的结合带来的新领域

神经科学研究,俗称"脑研究",在"大数据"概念出来的多年前就已经用上了一些大数据研究的方法了,所以,作为神经科学家,我们对"大数据"早就非常熟悉了.这里谈一下我个人对于神经科学领域大数据的一些想法. 大家要问,神经科学领域都有哪些大数据呢?这里,最明显不过的如"成像"数据,像功能性核磁共振(fMRI).弥散张量成像(DTI).电压敏感染料成像(VSDI)等实验的数据:还有使用多通道技术获得的的长时间的电生理数据,如多道EEG.

系统防护+DB安全+0Day+反漏洞挖掘,初窥ISC 2014互联网攻防(免费门票)

2014年4月8日,微软正式提出停止对WindowsXP的技术支持,作为迄今为止人类历史上服务时间最长的电脑操作系统,在其停摆后,用户信息安全,甚至国家信息安全都面临着严重的挑战.时隔5个月之后,这种种安全威胁是如何得到有效的解决呢?浏览器是病毒攻击的重要途径,包罗万象的软件市场中,我们该如何选择安全有效的工具和措施预防这接踵而至的安全危机呢? 9月24-25日,国内外数百位安全领域顶级专家齐聚2014中国互联网大会(ISC 2014)为上亿用户揭开网络安全的终极奥秘.本届大会由国家计算机网络应

用身体语言提升你的领导力

课堂讲师杜奎松:美国职业发展教练协会教练.美国凯瑟大学管理学特聘教授美国作家威廉姆·丹福思曾有这样一段描述:"当我经过一个昂首.收下颚.放平肩膀.收腹的人面前时,他对于我来说,是一个激励,我也会不由自主地站直."这段话道出了身体语言对他人产生微妙影响的玄机.即便在你沉默不语的时刻,你的姿态.神情,已经在无声地告诉人们你是谁,并且一定程度地决定了人们将如何对待你.正如人们早已熟知的一项研究成果所示,在信息传达过程中,单纯的语言只发挥7%的功能,声调起到38%的作用,而体态.表情等身体语言

“返老还童”药物将成现实

   倘若时间倒流无法实现,那么"永葆青春""返老还童"是否将会实现呢?最近,科学家通过一项最新研究,已经揭开永远年轻的奥秘,这为研制出"永葆青春"的 药物铺平了道路.有了这种灵丹妙药,人们就能更长寿.更健康.不会受到老年痴呆症和心脏病的困扰,皮肤和头发会像年轻时一样光泽亮丽.这种药物或许还能令 男性和女性在高龄以前一直能够自然生育小孩.增加健康生活的时间可以大大减少卫生服务成本.减轻家人照顾体弱多病的亲戚的负担.     还记得好莱坞大片<