分享
 
 
 

揭开NTFS下流的奥秘

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

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

stream

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

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

流依附于文件而存在,你可以在流中存储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如何运作,需要源程序的朋有同样可以购买.20元/份.付款信息件UTIL99vY页里的信息.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有