首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

NTFS 替代資料流(ADS)深度解析:隱藏資料、查詢 API 與工具

     編輯:VC 教學

什麼是 NTFS 流?

每個檔案可掛載多個「流」,流名以冒號分隔:`檔案名:流名`。流可儲存二進位、文字等任意資料,獨立於主資料流(`:$DATA`)。

命令列操作示範

ECHO 隱藏內容 > 公開.txt:秘密流
MORE < 公開.txt:秘密流
DIR 公開.txt   // 顯示大小 0,完全看不出流的存在

流的隱蔽性與偵測

  • Windows 內建工具(DIR、總管)完全不可見。
  • 第三方工具 Stream.exe(Sysinternals)可列出所有流名稱。
  • API 層面: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、網路分享不支援)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved