每個檔案可掛載多個「流」,流名以冒號分隔:`檔案名:流名`。流可儲存二進位、文字等任意資料,獨立於主資料流(`:$DATA`)。
ECHO 隱藏內容 > 公開.txt:秘密流
MORE < 公開.txt:秘密流
DIR 公開.txt // 顯示大小 0,完全看不出流的存在
BackupRead 可列舉流名;Native API NtQueryInformationFile (FileInformationClass=22) 回傳 FILE_STREAM_INFORMATION 結構,流名實際儲存為 `:流名:$DATA`,需自行去除尾綴。typedef struct {
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER EndOfStream;
LARGE_INTEGER AllocationSize;
WCHAR StreamName[1];
} FILE_STREAM_INFORMATION;
惡意程式常利用 ADS 隱藏後門、竊取資料;防毒軟體、入侵偵測系統必須掃描流。開發者亦可善用 ADS 儲存應用程式中繼資料(版本、授權等),但需注意跨檔案系統移動時流會遺失(FAT32、網路分享不支援)。