Windows Underground

Entgegen meiner Vorsätze breche ich nun doch das Schweigen noch vor dem Juni. Nicht nur dass ich mich furchtbar erkältet habe, es hat sich auch TeyHouse zu Wort gemeldet und mich von einem interessanten, eher unbekannten Feature des NTFS-Dateisystems in Kenntnis gesetzt: Alternate Data Streams (ADS). Folgende ASCII-Art (welche ich von diesem interessanten Artikel geborgt habe) veranschaulicht die Idee dahinter relativ gut:

+----------------------------------------+
| Direkt sichtbar +---------------------+|
|                 | Unnamed Stream      ||
|                 +---------------------+|
|----------------------------------------|
| Indirekt        +---------------------+|
| sichtbar        | Stream 1            ||
|                 +---------------------+|
|                          ...           |
|                 +---------------------+|
|                 | Stream n            ||
|                 +---------------------+|
+----------------------------------------+

Üblicherweise arbeitet man als Programmierer (und vor allem als Anwender) nur mit dem ersten, unbenannten Datenstrom. Dieser ist es auch, über den (fast) alle Programme auf die Datei zugreifen und somit den „sichtbaren“ Inhalt manipulieren können. Mit der Windows-API sieht der gewöhnliche Aufruf wie folgt aus:

HANDLE hFile = CreateFile("C:\\test.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);

Nun greifen wir auf einen von uns definierten alternativen Stream zu, der - ähnlich wie ei den Named Pipes - mit einem Namen versehen werden muss:

HANDLE hFile = CreateFile("C:\\test.txt:mystream", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);

Eine simple und doch mächtige Syntax, hiermit liefert die Funktion einen Handle auf den Inhalt der „Datei in der Datei“. Man muss sich dabei allerdings keine Sorgen machen, dass man damit irgendwie den Inhalt der eigentlichen Datei überschreiben oder beschädigen könnte, da das Betriebssystem automatisch fragmentiert. Also kann dieser alternative Stream wie jede andere Ressource mit Daten befüllt und verändert werden. Kreative Köpfe die wir sind haben wir uns natürlich gleich ein paar Anwendungsbeispiele für die Praxis zusammengereimt, wie… ahnungslose Nutzer ärgern :-) Sowohl im Windows Explorer als auch in den gehobeneren Tools wie TuneUp Disk Space Explorer scheinen die Größen dieser vermeintlich versteckten Daten nicht auf, die Festplatte selbst ist da natürlich anderer Meinung und speichert alles schön brav ab. Wir basteln just in diesem Moment an einem kleinen Tool, mit dem sich solche „Spezialdateien“ erstellen lassen, die man dann irgendwo im System verstecken kann. Wenn wir unseren Disput im Punkto Subversion beseitigt haben gibt es auch einen Release, also bis später :-D

Download

Kommentare