Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
mar

Чтение системной области диска - win98

18.03.2012, 01:39. Показов 1909. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно требуется прочитать первые сектора диска (причем работая из-под borland builder), а получается только 63-ий (там где загрузочная запись уже FAT). Нужно это для несколько маразматической задачи - люди, которых в силу разных причин послать подальше не могу и не хочу просили помочь им помешать возможности скопировать установленную программу (какую-то их, написанную на builder-е) на другую машину. Я предупредила, что возможна только защита от дурака разного уровня :], но они согласны и на это.

Честно говоря, ничего умнее, чем при установке привязаться к железу (естественно, зашифровав результат), а потом сверять результаты, мне в голову не пришло. Соответственно, насколько я понимаю, нужно работать через CreateFile на устройство и получать информацию, используя DeviceIoControl на полученный handle.

Поскольку NT-ой машины у меня дома в выходные под рукой нет, я пока поэксперементировала с 98 SE. Там (судя по документации) CreateFile делается не на устройство, а на драйвер vwin32 а потом вызывается DeviceIoControl на указатель, полученный в результате CreateFile и с одной из следующих функций:
Code
1
2
3
4
5
#define VWIN32_DIOC_DOS_DRIVEINFO 6 //Performs Interrupt 21h Function 730X commands. This value is supported in Windows 95 OEM Service Release 2 and later.
#define VWIN32_DIOC_DOS_INT13 4 // Performs Interrupt 13h commands
#define VWIN32_DIOC_DOS_INT25 2 // Performs the Absolute Disk Read command (Interrupt 25h)
#define VWIN32_DIOC_DOS_INT26 3 // Performs the Absolute Disk Write command (Interrupt 25h)
#define VWIN32_DIOC_DOS_IOCTL 1 // Performs the specified MS-DOS device I/O control function (Interrupt 21h Function 4400h through 4411h)
ну так вот, читать с жесткого диска у меня получается только через 21h Function 730X (VWIN32_DIOC_DOS_DRIVEINFO), как собственно, и рекомендуют в MSDN (или VWIN32_DIOC_DOS_IOCTL - 21h Function 4400h). попытка пройти через 13-ое выдает ошибку. А тут получается работа только с логическим диском (пусть даже на физическом уровне)

Не по теме:

забавно, судя по виду дампа EB 58 90 4D 53 57 49 4E из статьи о CIH-вирусе он лезет туда же, а мне-то казалось, что он пакостит в системнеой дорожке


Вопрос - есть ли возможность все-таки прочитать эту системную область из win и как?

В сети я наткнулась на программу http://www.winsim.com/diskid32/diskid32.html -
diskid32 (Автор: Lynn McGuire (WinSim). И программа и идеи очень интересны, рекомендую, но: прилагаемый к ней exe реально работает, а попытка откомпилировать ее под borland ни к чему хорошему не приводит. (При компиляции вылетаем с ошибкой на функции, переводящей из 3 кольца защиты в Ring0)
any ideas? буду очень благодарна

ps (я не уверена, что для данной конкретной задачи нужно заморачиваться 98-ыми, но мне уже самой стало интересно

Статьи MSDN по теме:
Calling DeviceIoControl on Windows NT/2000
Calling DeviceIoControl on Windows 95/98
Using VWIN32 to Carry Out MS-DOS Functions
PRB: DeviceIoControl Int 13h Does Not Support Hard Disks
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2012, 01:39
Ответы с готовыми решениями:

Области памяти используемые системной платой
Здравствуйте! Не знал куда задать свой вопрос, но думаю к администрированию это имеет большее отношение. Какие области физической...

Чтение файла с системной директории
Помогите с чтением файла с системной директории: /dev/input/event0 Пробовал по всякому так: try{ Process process =...

Поиск системной информации операционной системы в дампе жесткого диска
Здравствуйте, Собственно суть проблемы заключена в названии темы: Поиск системной информации операционной системы в дампе жесткого диска....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2012, 01:39
Помогаю со студенческими работами здесь

Cтруктура диска повреждена чтение невозможно.как спасти ценную информацию с диска D?
нет доступа к D: структура диска повреждена чтение невозможно-вот такое сообщение получила когда пыталась зайти на D..... После внезапного...

Запись/чтение системной строки в текстовый файл
Прошу подсказать как записать/прочитать системную строку System::String ^st; в текстовый файл. Если можно коротенький код. Добавлено...

Как соединить две области диска?
Добрый день! Столкнулся с такой проблемой. Купил ноут, который на DOS. Когда устанавливал Windows, при выборе участка для установки,...

чтение диска NTFS
Есть задача, но я не представляю, как ее реализовывать. Задача- написать простейшую читалку HDD. Нужно: переходить к следующему...

С++ чтение секторов диска
как по очереди прочитать все сектора на диске? по идее должна использоваться функция ReadFile(hDevice, buf, 512, &dwBytesRead, NULL);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru