国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

揭開NTFS下流的奧秘

2019-11-17 05:34:57
字體:
來源:轉載
供稿:網友

  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頁里的信息.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆子县| 玛沁县| 泗水县| 和平区| 元谋县| 乡城县| 金昌市| 洪洞县| 阿城市| 连州市| 西昌市| 江津市| 平塘县| 蒲江县| 简阳市| 大同市| 永靖县| 赤壁市| 红桥区| 峡江县| 浙江省| 香港| 汉沽区| 涪陵区| 元朗区| 乳山市| 神农架林区| 扶绥县| 民权县| 南昌县| 福清市| 申扎县| 鄄城县| 彭泽县| 庆阳市| 天峨县| 达孜县| 营山县| 冷水江市| 邯郸市| 广南县|