Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #62, ФЕВРАЛЬ 2004 г.

Обход ограничений FAT32/NTFS

A.M.D.F. (amdf@mera.net.ru)

Xakep, номер #062, стр. 062-080-5


Universal Naming Convention

Universal Naming Convention – сокращенно UNC, можно дословно перевести как «Универсальное соглашение об именах». Это формат для записи пути к файлу, расположенному на удаленном компьютере. Он имеет вид «\\server\share\path». Server - это, как ни странно, сервер. Share – расшаренный ресурс на нем, а дальше следует путь к файлу в обычном формате. Такой способ доступа к файлам можно использовать и для локальной машины, только в этом случае вместо “server” нужно подставлять «?» или «.», а путь к файлу указывать вместе с буквой диска. Например, так: «\\?\C:\folder\file.txt».

Листинг 1

#include <windows.h>

#include <iostream.h>

void CreateStrangeFile(char *filename)

{

char *curdir; //текущая папка

char *uncpath; //полный путь до файла в формате UNC

GetCurrentDirectory(MAX_PATH,curdir); //получаем текущий каталог

wsprintf(uncpath,"\\\\?\\%s\\%s",curdir, filename); //формируем UNC-путь

HANDLE hFile = CreateFile( uncpath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,

CREATE_ALWAYS, NULL, NULL);

//создаем новый файл

DWORD ret;

__try {

WriteFile(hFile,"This is a super secret info",28,&ret, NULL);

//записываем секретную инфу

}

__finally {

CloseHandle(hFile);

//закрываем файл

}

}

void main()

{

CreateStrangeFile("prn");

//создаем файл «prn»

}

Листинг 2

#include <windows.h>

void main()

{

char *old = "C:\\TMP\\somefile.txt";

char *_new = "C:\\TMP\\twodots..";

//переменные для нового и старого имени файла

char *newname;

wsprintf(newname,"%s.\\",_new);

//добавляем символы «.\» в новое имя файла

MoveFile(old, newname);

//переименовываем файл

}

Листинг 3

#include <windows.h>

void main()

{

HANDLE hStream = CreateFile( "space :stream",GENERIC_WRITE,FILE_SHARE_WRITE,

NULL,CREATE_ALWAYS,NULL,NULL );

DWORD ret;

WriteFile( hStream, "This is space :stream", 21, &ret, NULL );

CloseHandle(hStream);

}

INFO

Microsoft Knowledge Base:

support.microsoft.com

Q320081, Q315226, Q115827, Q303074, Q120716

WWW

DotFiles Creator:

mera.net.ru/~amdf/rarz/fsbug_6b.rar

CD

На диске лежит весь описанный софт, а также компонент для Delphi.

Назад на стр. 062-080-4  Содержание