На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
  
> Произвольное чтение
    ВСем привет. Не знаю как сделать в винде произвольное (т.е. по секторам) чтение (и по возможности запись) с диска или памяти. Кто-нить может помочь?
      Учитель конечно лопух, но по-моему тут надо VXD писать... Поправьте если не прав...
      А вообще, много народу это делало...
      Я думаю просто покопаться надо в инете...
      Вот первый пришедший в голову пример:
      NDD,ScanDisk и Speeddisk это делают.
      Как ScanDisk - не знаю, а у Symantec наверняка своя DLL есть...
        Ну есть на самом деле логический диск и физический. Если тебе надо писать в MBR например, то без VxD не обойтись. А по логическому кажись можно и так..., DLL максимум.
          Мне вообще физическое чтение интересно. Если надо вхд писать, то я вообще не умелец писать дрова. :) Может кто научит?
            Если всё под 9х то можно и без VxD. Получаешь 0-й уровень привелегий (извесная дыра, которую использует в частности WinCIH) и юзаешь ф-ции WriteAbsoluteDisk и eadAbsoluteDisk. Ф-ции вроде IFS, хотя до конца не уверен... Да какая разница! Юзай и всё!
              Да, ещё. Ежели надумаешь VxD писать -- мыль. некоторая инфа имеет место быть. ;-))
                Допустим, с физическим чтением с диска я разобрался (посредством DeviceIoControl() с вызовом Int21h Function 7305h Ext_ABSDiskReadWrite (FAT32)).
                Теперь вопрос только в том, как читать из памяти. Здесь некоторые говорят, что необходимы дрова. Так ли это? Если да - то научите, что и как надо делать. :)
                  to server_mouse: Sorry за чайниковый вопрос, но как все-таки в нулевой ринг попасть, а? И поможет ли это?
                  to Susik: ну, вообще-то это не совсем решение проблемы, во всяком случае, моей. Мне нужно читать с винта с не-фатом, а этого так просто не сделать. :-( Кстати, если найдешь, как читать из памяти, кинь, пожалуйста.
                    Я вообще не пробовал, как там читать с не_фатом, но с фатом у меня читается все достаточно нормально: и с винта, и с дискетки. :) А! Дискетку переписывал много раз всякими своими штуками (допустим просто текст какой-нить), там уже фатом давно и не пахло (писал в область его расположения), а читалось, в общем-то, как и должно читаться.
                    А что такое нулевой ринг? И зачем он нужен?
                      Хм-хм, и чем читал? В смысле с дискеты, где фатом и не пахло?
                      Просто дело в том, что тот же vwin32 прекрасно эмулирует 13h для дискеты, но совершенно не хочет его использовать для винта, даже если на тот поставить physical lock самого понтового уровня (я про нулевой, lock level 0 - это виндовская штука для защиты во время проведения, скажем, дефрагментации, винта от всех других приложений). Может, правда, это я чего не так сделал, но пока не пойму, чего.
                      А нулевой ринг - это ring 0, как он называется в виндах. На самом деле в 386 камне было аппаратно реализовано наличие разных привилегий. Собственно, существуют четыре положения процессора, от 0 до 3. То, что идет при нуле, обладает максимальными правами, у нее есть доступ ко всему (потому что если у нее нет, то вообще ни у кого не будет). А если ты сидишь на тройке, то почти ничего сделать напрямую не можешь.
                      В виндах в 0 сидят VMM, распределяющий память, и чего-то еще важное, забыл что. А все остальные, включая ядро, не говоря уже о всяких там пользвательских прогах, сидят в ring 3. Откуда посылают все на обработку тем, кто сидит в нуле.
                      Другое дело, что, скажем, если ты драйвер, то выходить в нулевое кольцо, скорее всего, все равно придется.
                      Я страшно сумбурно об этом рассказываю, но если чего еще интересно, спрашивай, а то посмотри какую-нибудь книжку по ASM'у про архитектуру 386, въехать поначалу будет трудно, но иметь обо всех подобных штуках представление вполне себе полезно :-)
                      Про реализацию колец в виндах можно тот же MSDN посмотреть.
                        Пасиб. А то че-то пишут тут иногда про кольца, а я ваще темный...
                          http://www.sources.ru/asm/get_ring_0_privilege.shtml
                            Пасиба тоже. :) Как-нить поэкспериментирую.
                            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0296 ]   [ 15 queries used ]   [ Generated: 18.05.24, 23:37 GMT ]