Здравствуйте, SilverCloud, Вы писали:
SC>По-моему, дело не в функции. Просто доступ к метаданным NTFS из-под администратора был возможен только в версиях NT до Win2K. (На sysinternals была утилитка ntfsinfo, посмотри, если её ещё не убрали.)
NTFSINFO я скачал, метадатафайлы не показывает. Что мне делать, если у меня XP?
SC>Можно попробовать, конечно, под Local System, но это . SC>В любом случае под простым пользователем работать не будет, и, IMHO, и не должно.
Под простым пользователем это и не должно работать, по смыслу программы.
SC>Если цель — причинение геморроя на доступ к твоим данным, то можно попробовать использовать следующий факт:
SC>В WinAPI имена файлов — это 0-terminated строки, в Native NT API — строки с явно заданной длиной. SC>Соответственно, файл с именем типа "\0MyCoolFile" должен быть доступен в NT, но недоступен в Win32. SC>Ещё можно с POSIX-семантикой позаморачиваться.
Так я не понял, как мне размеры boot sector узнать? А вообще, не проще ли прочитать первые сектора, найти первые пустые сектора от начала, которые вроде и будут boot, и записать туда все, что я хочу?
SC>PS: Если я ошибаюсь, уважаемые гуру меня поправят. SC>PPS: А вообще, нужно ли такое причинение геммороев? Может, сама задача неправильно поставлена? Сдаётся мне, что права доступа штатными средствами надо разруливать, если ты, конечно, не вирус пишешь
Дело в том, что пишу я что-то вроде защиты от пиратства, и моя цель-доставить пиратам побольше геммороя.
Re[8]: Прямая запись на диск
От:
Аноним
Дата:
06.02.04 06:36
Оценка:
Здравствуйте, MShura, Вы писали:
ВН>>Это, конечно, все очень хорошо, но это — грязный хак. Две таких программы уже не будут корректно работать. ИМХО надо искать какие-то другие способы для решения задачи.
Вопрос может быть идиотский, но все таки, а в свапе нельзя создавать объекты, способные пережить выгрузку программы? Другой вопрос, а разве к файлу может быть соэдан только один поток?
D>Так я не понял, как мне размеры boot sector узнать? А вообще, не проще ли прочитать первые сектора, найти первые пустые сектора от начала, которые вроде и будут boot, и записать туда все, что я хочу?
Я не встречал, ситуаций когда размер данных $Boot меньше 8К, т.е. это 16 секторов.
Размер самого заргузчика обычно 6-8 секторов.
Вижу два пути получения настоящего размер $Boot под Win2K+:
Получить handle на файл (как это делает Руссинович при получении handle на pagefile.sys)
Имея этот handle можно узнать многое.
К сожалению способ получения я видел и понял из IDA только в общих чертах и если понадобится, то повторю, но это приличные затраты времени.
Второй путь — научиться самому находить эту информацию.
Это несложно. http://linux-ntfs.sourceforge.net/ntfs/index.html
Т.е. тебе надо.
— Прочитать первые 512 байт (boot sector)
— Проверить некоторые поля (это NTFS??)
— Взять начало $MFT (в кластерах) из boot sector
— Умножить на размер кластера, прибавить 14 секторов. Это 7 запись (при условии, что размер записи 1024 байт)
— Прочитать 1024 байт (одну запись)
— Найти в этой записи аттрибут данных
— Воспользоваться значением allocated (в данном случае все размеры в этом аттрибуте будут совпадать)
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, MShura, Вы писали:
ВН>>>Это, конечно, все очень хорошо, но это — грязный хак. Две таких программы уже не будут корректно работать. ИМХО надо искать какие-то другие способы для решения задачи.
А>Вопрос может быть идиотский, но все таки, а в свапе нельзя создавать объекты, способные пережить выгрузку программы? Другой вопрос, а разве к файлу может быть соэдан только один поток?
1) в свопе — нельзя
2) потоков — 1 неименованный и сколько угодно именованных
... << RSDN@Home 1.1.3 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
. От себя добавлю, что программу, которая делает такие вещи, ставить просто опасно, и любой антивирус тебе это подтвердит Кстати, что это за программа такая, что ей как минимум администратор нужен? Средство администрирования? Если нет, то в сад такую программу! Защиту от несанкционированного копирования надо делать другими средствами. Легальными с точки зрения ОС. На Королевстве Дельфи была серия статей на эту тему.
P.S.: Знаю случай, когда легально купленную программу пришлось ломать (именно ломать, а не копировать), просто чтобы заставить работать на предназначенной ей машинеКопировалась, кстати, она один к одному за ~5 минут. В защите тоже raw доступ к диску использовался