информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят медГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Запись на винт-С++, biosdisk 09.05.02 19:18  Число просмотров: 1066
Автор: Moderator Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > Через IOCtl может быть такая шняга: винда дает
> писать
> > > только в сектора активного раздела, а начало
> диска(mbr
> > > ты хочешь?) к нему не принадлежат ;)
> > Дык разлочить надо! Ток вот как... 8)
>
> В 98-х можно попробовать написать динамик VxD, который
> позовет сервис другого VxD, например:
>
> Values for Int13 (VxD ID 0020h) service number:
> 00h get version
> 01h device registered
> 02h translate VM interrupt
> 03h hooking BIOS interrupt
> 04h unhooking BIOS interrupt
>
> Вообще-то, когда зовешь, к примеру, ReadFile, вызов
> проходит через кучу VxD-шек, а окончательно сектора читает
> IOS (IOS_Send_Command & IOS_Send_Next_Command). В смысле,
> конечно, не сам читает(у меня читает VxD ESDI через команды
> in/out), но с точки зрения сервиса чтения секторов - именно
> он.
> Также можно попробовать писать через команды in/out из
> того же динамик VxD.
ВА не проще ли вызвать команду "lock" из command.com? :0) Например так(поправьте если неправильно):
execl("command.com", "command.com",
"lock", "y", NULL) ;
<programming>
[C++] Запись на винт-С++, biosdisk 07.05.02 21:02  
Автор: Moderator Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Хочу, чтобы записала нули в нулевуой сектор пишу через функцию biosdisk:
char buffer[512];
biosdisk(3,0x80,0,0,0,20,buffer); Но информация не пишется! Может я не так координаты задаю? Если нет, то в чем косяк?
Про Win95/98/Me и NT/W2K/XP/NET _вся_ информация есть в PlatformSDK 09.05.02 17:53  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Поиши следуюшие строчки:
"Device Input and Output Control Codes"
"DeviceIoControl"
"CreateFile"
"Exclusive Use Lock"

Разница между Win95/98 и NT колосальная.
В NT как в Unix можно просто открыть "файл", который на самом деле диск и делать что угодно. В Win95 масса мышиной возьни...
[C++] Запись на винт-С++, biosdisk 07.05.02 21:10  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
>
> Хочу, чтобы записала нули в нулевуой сектор пишу через
> функцию biosdisk:
> char buffer[512];
> biosdisk(3,0x80,0,0,0,20,buffer); Но информация не
> пишется! Может я не так координаты задаю? Если нет, то в
> чем косяк?

Я сейчас уже не помню формат аргументов biosdisk(), но на всякий случай:
- сектора нумеруются начиная с 1 (не с нуля);
- последние верси DOS (Win95/98/Me) блокируют низкоуровневый доступ к диску, посмотри help по команде lock.
- NT не даст записать в принципе, нужно использовать Ioctl()

Удачи!
[C++] Запись на винт-С++, biosdisk 08.05.02 08:22  
Автор: Moderator Статус: Незарегистрированный пользователь
<"чистая" ссылка>

>
> Я сейчас уже не помню формат аргументов biosdisk(), но на
> всякий случай:
> - сектора нумеруются начиная с 1 (не с нуля);
> - последние верси DOS (Win95/98/Me) блокируют
> низкоуровневый доступ к диску, посмотри help по команде
> lock.
> - NT не даст записать в принципе, нужно использовать
> Ioctl()
>
> Удачи!
За удачу спасибо! 8)Если решать эту проблему через то ioctl() то какой адрес задавать, чтобы инфа записалась в начала диска?
[C++] Запись на винт-С++, biosdisk 08.05.02 17:28  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
Через IOCtl может быть такая шняга: винда дает писать только в сектора активного раздела, а начало диска(mbr ты хочешь?) к нему не принадлежат ;)
[C++] Запись на винт-С++, biosdisk 08.05.02 18:08  
Автор: Moderator Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Через IOCtl может быть такая шняга: винда дает писать
> только в сектора активного раздела, а начало диска(mbr ты
> хочешь?) к нему не принадлежат ;)
Дык разлочить надо! Ток вот как... 8)
[C++] Запись на винт-С++, biosdisk 08.05.02 18:33  
Автор: Chingachguk <Chingachguk> Статус: Member
Отредактировано 08.05.02 18:39  Количество правок: 1
<"чистая" ссылка>
> > Через IOCtl может быть такая шняга: винда дает писать
> > только в сектора активного раздела, а начало диска(mbr
> > ты хочешь?) к нему не принадлежат ;)
> Дык разлочить надо! Ток вот как... 8)

В 98-х можно попробовать написать динамик VxD, который позовет сервис другого VxD, например:

Values for Int13 (VxD ID 0020h) service number:
00h get version
01h device registered
02h translate VM interrupt
03h hooking BIOS interrupt
04h unhooking BIOS interrupt

Вообще-то, когда зовешь, к примеру, ReadFile, вызов проходит через кучу VxD-шек, а окончательно сектора читает IOS (IOS_Send_Command & IOS_Send_Next_Command). В смысле, конечно, не сам читает(у меня читает VxD ESDI через команды in/out), но с точки зрения сервиса чтения секторов - именно он.
Также можно попробовать писать через команды in/out из того же динамик VxD.
[C++] Запись на винт-С++, biosdisk 09.05.02 19:18  
Автор: Moderator Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > Через IOCtl может быть такая шняга: винда дает
> писать
> > > только в сектора активного раздела, а начало
> диска(mbr
> > > ты хочешь?) к нему не принадлежат ;)
> > Дык разлочить надо! Ток вот как... 8)
>
> В 98-х можно попробовать написать динамик VxD, который
> позовет сервис другого VxD, например:
>
> Values for Int13 (VxD ID 0020h) service number:
> 00h get version
> 01h device registered
> 02h translate VM interrupt
> 03h hooking BIOS interrupt
> 04h unhooking BIOS interrupt
>
> Вообще-то, когда зовешь, к примеру, ReadFile, вызов
> проходит через кучу VxD-шек, а окончательно сектора читает
> IOS (IOS_Send_Command & IOS_Send_Next_Command). В смысле,
> конечно, не сам читает(у меня читает VxD ESDI через команды
> in/out), но с точки зрения сервиса чтения секторов - именно
> он.
> Также можно попробовать писать через команды in/out из
> того же динамик VxD.
ВА не проще ли вызвать команду "lock" из command.com? :0) Например так(поправьте если неправильно):
execl("command.com", "command.com",
"lock", "y", NULL) ;
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach