Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 16.06.2020
Сообщений: 12
FASM

Низкоуровневый доступ к жесткому диску

16.06.2020, 22:04. Показов 3739. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Хочу сделать хакерскую программу для посекторного копирования одного жесткого диска на другой.
Сначала я хотел делать на Си, под ДОС, но там очень ограниченное число функций.
Потом, я передумал делать даже под ДОС, потому что в ДОС как в малоразрядной системе нельзя адресовать (наверное) диски размером 3 терабайта.
И поэтому я решил делать не на Си, а на ассемблере. Без ОС на самодельном загрузчике. 64 бита.
Ассемблер я не знаю.

Я нашел немного материала:
http://www.firststeps.ru/asm/r.php?20
"AH=02H
Al - количество секторов для чтения.
CH - цилиндр
CL - сектор
DH - головка
DL - диск
ES:BX - сегмент смещение для буфера."
На этом сайте написано, что цилиндр - это физический диск. Но в диска есть 2 стороны. Мне не понятно, головки используются для обозначения сторон? Или обе стороны физического диска представляют собой цилиндр, а головки используются для деления этого цилиндра на два?
Еще мне не понятно, как прочитать и куда информацию? И какими цифрами, в каком виде идет нумерация? Как представить число например 5657?
Assembler
1
2
3
4
5
6
7
mov ah, 02h
mov al, 5657
mov ch, 0
mov cl, 0
mov dh, 0
mov dl, 0
int 13h
А дальше что? Количество считанных секторов, такое как 5657, не уместится ни в один регистр. Где находится тот буфер?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2020, 22:04
Ответы с готовыми решениями:

Как посчитать количество обращений к жесткому диску?
Знаю, что необходимо перехватывать прерывания, но не знаю как это сделать... Помогите пожалуйста((

Доступ к жёсткому диску
Всем привет! Есть внешний жёсткий диск. На нём хранятся и программы, нужные файлы и ненужные. В процессе работы мне приходится подключать...

Доступ к жесткому диску
Здравствуйте. Установил вин7. Подключил дополнительный жесткий диск со своими данными. Инициировала она его нормально. Скорость...

9
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
16.06.2020, 22:17
Эти данные из древнего мира древнего оборудования.
Конечно, BIOS для материнки обновляется и улучшает программное обеспечение прерывания int 13h, но что-то остаётся неучтённым.

Решение не в мире DOS и не в мире ассемблера.
1
1 / 1 / 0
Регистрация: 16.06.2020
Сообщений: 12
17.06.2020, 00:00  [ТС]
Спасибо за ответ! А Вы случайно не знаете, как выполнить операцию в новых биосах?
У меня есть диск 1 терабайт размером. Я с ним замучился. Надо восстановить с него данные. У него первых 200 миллионов LBA (я не знаю, что это) MHDD отображает битыми. Вернее, он на них намертво виснет до выключения питания. Подбирал методов тыка и где-то с 200 миллионов прекращаются зависания.
Когда Windows или Linux загружаются (конечно не с этого, а с другого диска), то этот диск трещит как трактор и зависает. Даже после перезагрузки он остается зависшим и трещит. Помогает только выключение компьютера и снятие питания с диска.
Если же не обращаться к этим первым 200 миллионов LBA, то диск работает нормально (в MHDD).
Я взял программу для DOS "CopyR DMA HDD Cloner" и удачно скопировал при ее помощи с 200 до 256 миллионов LBA. Это около 25 Гб. Но больше я не смог. Эта программа не видит пространство более 128 Гб (256 миллионов LBA). Первых 100 Гб (200 миллионов) испорчены, поэтому можно копировать только остальных 25 Гб (до 256 миллионов).
Я искал другие программы посекторного копирования, но я ничего не нашел. Есть только для Windows, Linux. А они обязательно лезут в эти сектора (первые на диске) и диск виснет. Поэтому я не могу использовать эти системы.
Я так понял, что я могу использовать только ДОС. Но я так понял, ДОС не адресует диски более 128 Гб. И поэтому я никогда не найду нужной программы. Только изготовить самостоятельно. Либо переделать как-то ДОС и CopyR под 64-бит. Или может я неправильно понимаю... Расскажите, пожалуйста, все что Вам известно по этой теме.

Добавлено через 7 минут
Хотя вообще MHDD увидел и просканировал этот терабайтный диск.
А вот второй, 3-терабайтный, он просканировать не смог. Он отобразил максимальный LBA - 5 с чем-то миллиардов, но просканировать он смог только до 1.9 миллиарда.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
17.06.2020, 00:03
Вам нужно обратиться в раздел
https://www.cyberforum.ru/data-recovery/
И никакой самодеятельности в самописных программах.

Если данные имеют высокую ценность, то лучше совсем - в специализированную фирму. Это, конечно, дорого, но вероятность восстановления выше.
1
1 / 1 / 0
Регистрация: 16.06.2020
Сообщений: 12
17.06.2020, 05:21  [ТС]
Спасибо за ответ, я создал тему
Восстановить данные с диска Seagate 1 TB
но мне бы очень хотелось заняться самодеятельностью. Руки чешутся. Потому что за несколько месяцев поиска нужной программы я не нашел.
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
17.06.2020, 16:03
Цитата Сообщение от anoxakerbrov Посмотреть сообщение
Расскажите, пожалуйста, все что Вам известно по этой теме.
А в гугле забанили ? Это-же сколько рассказывать надо.
Когда-то давным давно была программа Norton DiskEdit которая позволяла копировать группы секторов или физических секторов в файлы и обратно. Копии жестких дисков сектор в сектор делали ей. Просто копировали все физические сектора от первого до последнего на одном диске в файл на другом. Только работала эта прога под MS-DOS, потом появилась версия под Win-95/98.
Полагаю, что наследником этой проги для NT-образных ОС с файловой системой NTFS является это https://dmde.ru/
Вот ее и осваивай.
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
17.06.2020, 17:05
Ещё я пользовался Clonezilla для копирования диска - я как-то не так ставил драйвера и программы на ноутбук, что приводило к необходимости почти в тот же день переустанавливать Windows Vista. Там ещё какие-то проблемы были. На второй раз мне это надоело и сделал образ сразу после установки Windows и ещё один сразу после установки всех драйверов и обновлений. Как ни странно, после создания образа диска - он пригодился только 1-2 раза - всё заработало устойчиво.

Но, Clonezilla сжимает образы - не сохраняет незанятые области или, что-то в этом духе. Сделал такой вывод потому, что образ был значительно меньше HDD.

Как понимаю, данные на диске - не важны. Раз хочется самодеятельности - придётся искать информацию по работе с дисками на уровне портов, т.к. чтение сбойных секторов имеют какие-то особенности.

Даже не знаю, что посоветовать к чтению.
Наверное книги Михаила Гука, Владимира Кулакова. Хотя, они уже устарели.
Кроме этого есть сайт с хорошими статьями, забыл название, его всегда рекомендуют почитать при работе с "железом", написанию собственной ОС - даже не помню, он на русском или по английски.
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
17.06.2020, 18:30
Лучший ответ Сообщение было отмечено anoxakerbrov как решение

Решение

Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
сделал образ
Так образ чего ? Диска (посекторный) или файловой системы ? У ТС-а файловая система похерена. Попсовые программы которые бахвалятся тем, что создают образ диска на самом деле не его создают.

Добавлено через 5 минут
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
не сохраняет незанятые области или, что-то в этом духе
Ну так и есть. На и нафиг эта Зилла нужна ? Нужна прога, которая явно говорит - копирую в файл физические сектора диска от сих по сих.
Я бы сделал так - посекторно скопировал бы диск в файл на другой диск (ожидая когда это копирование закончится со всеми ошибками которые при этом вылетят), потом нашел бы точно такой-же диск как погибший, файл скопировал бы в физические сектора этого диска и уже на нем пытался что-то спасать.

Добавлено через 20 минут
А, затупил.
Не надо промежуточного файла. Сразу dmde с дохлого диска посекторно физические сектора копировать на точно такой-же живой, а потом на живом искать что можно спасти. Это вот самый надежный способ.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
17.06.2020, 18:33
Не помню. Кажется, можно было и диск со структурой разделов и отдельные разделы.
Это было во времена Windows Vista.
Запомнил инструмент потому, что задачу снятия и восстановления копии диска выполнял.

Очень может быть, что в какой-то момент я сделал копию не диска а раздела - для скорости восстановления - и именно у этого образа был уменьшенный объём по сравнению с разделом.

Если ТС будет интересно - найдёт и уточнит возможности.

Для тех целей - Clonezilla была хорошим инструментом. Примерно, ослабленным аналогом Acronis. Но бесплатным.
0
1 / 1 / 0
Регистрация: 16.06.2020
Сообщений: 12
17.06.2020, 22:11  [ТС]
Ethereal, спасибо большое у меня все получилось, что касалось посекторного копирования! Я сразу после Вашего ответа все загрузил и скопировал.
Чтобы не делать кросспостинга,
Восстановить данные с диска Seagate 1 TB
Но проблемные сектора не скопировались. Я делал повторные попытки, при этом битые LBA смещались на несколько млн взад-вперед. Значит, проблема в механике (позиционирование)? Надо уменьшить скорость вращения диска и уменьшить скорость головки. Но вот dmde здесь уже не помогает.
Может, есть ассемблерные команды для уменьшения скорости диска?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2020, 22:11
Помогаю со студенческими работами здесь

Доступ к жесткому диску
Здравствуйте, имеется 2 системы (windows 7 + windows 7). Обе установлены на разных физических ЖД. Из 1 системы надо закрыть доступ ко...

Доступ к жесткому диску
Были неправильно изменены права доступа к жесткому диску. В меню профилей доступа ж.д.(properties/Security/Group or user names) сначала...

Пропал доступ к жесткому диску
Добрый день всем, очень нужна помощь. Есть сервер на 2003 винде, на нем есть 3 диска: C - сама винда и фаилы пользователей, D - запись...

Пропал доступ к жесткому диску
Здравствуйте! Пропал доступ к hdd, пишет "Нет доступа к H:\. Файл или папка повреждены". Подскажите в чем может быть причина, и есть...

Как закрыть доступ к жесткому диску?
Здраствуйте! Подскажите,как можно закрыть доступ на отдельный (физический) винчестер от остальных пользователей. Например,чтоб открывался с...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru