|
tanto che ci sono aggiungo anche che su Windows NT esistono alcuni modi per nascondere completamente un file utilizzando le API native: i nomi di files (come qualsiasi altra stringa di testo) vengono normalmente terminati da un carattere NULL, ma questo non avviene quando si usano le API native, le quali vogliono le stringhe in ingresso specificate assieme alla loro lunghezza; se tramite API native viene creato file il cui nome contiene di per se' un carattere NULL finale, esso sarà invisibile al subsystem Win32 e quindi a qualsiasi programma Windows. per esempio, mettiamo che io creo in C: il file "pippo"; l'API nativa NtCreateFile riceverà la stringa "pippo" (in Unicode ovviamente) assieme alla sua lunghezza, che è 5, ma se anziché chiamarlo "pippo" lo chiamo "pippo\0" (cioè "pippo" seguito da un ultimo carattere ASCII 0) e chiamo NtCreateFile passandole "pippo\0" e 6 di lunghezza, il file rimarrà inaccessibile a qualsiasi programma Win32: per esempio explorer quando legge una cartella ne enumera il contenuto; nel nostro caso troverebbe un file di nome "pippo\0\0" (includendo entrambi i NULL finali) ma chiaramente lo leggerebbe come "pippo\0", cioè "pippo", e tentando di accedervi (ad esempio per cancellarlo sotto richiesta dell'utente) riceverebbe errore perché non esiste nessun "pippo".
questo è solo uno dei modi...
|