Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > считать в память сектор жёсткого диска


Автор: jah2 9.1.2015, 12:13
Здравствуйте!

Какими командами в первом секторе жёсткого диска считать, скажем, второй сектор жёсткого диска в оперативную память и передать управление на эти команды?
Если я правильно понимаю, в конец первого сектора придётся дополнительно записать 55 AA, а с жёсткого диска считывание идёт секторами.

Спасибо!

Автор: _zorn_ 9.1.2015, 12:36
Бери winex, дампь MBR и иследуй в ИДА например.

Автор: jah2 9.1.2015, 19:57
Цитата(_zorn_ @  9.1.2015,  12:36 Найти цитируемый пост)
Бери winex, дампь MBR и иследуй в ИДА например. 

спасибо за ответ, а напрямую можно подсказать, вроде бы это вопрос по основам, 
даже не представляю как исследовать, понимаю только, что должны быть некие команды, которые считывают этот сектор в память, а дальше начинается их чтение из памяти и исполнение
если бы привели хотя бы названия этих команд, сильно бы помогло в поисках

Автор: ФедосеевПавел 9.1.2015, 20:58
Думаю, что чтение секторов во время загрузки (т.е. в отсутствии ОС) выполняется прерываниями BIOS - int 13h. Передача управления - jmp far. А чтение одного (начального) загрузочного сектора - автоматически средствами BIOS. Дальнейшая подгрузка - тем кодом, что загрузился ранее (int13h, jmp/call).

На днях попадалась http://biosprog.narod.ru/real/ints/int.htm с описаниями прерываний, но описания от Ральфа Брауна, конечно, предпочтительнее.

Примеры загрузчиков - даже описаний - можно поискать в сети. Особенно на сайтах ассемблерной направленности (например, wasm.ru - там в архиве статей есть и что-то о начальной загрузке). В разделах FAQ и "Исходники" многих форумов есть примеры (http://sources.codenet.ru/?cid=3).

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

Автор: jah2 9.1.2015, 22:11
Цитата(ФедосеевПавел @  9.1.2015,  20:58 Найти цитируемый пост)
Думаю, что чтение секторов во время загрузки (т.е. в отсутствии ОС) выполняется прерываниями BIOS - int 13h. Передача управления - jmp far. А чтение одного (начального) загрузочного сектора - автоматически средствами BIOS. Дальнейшая подгрузка - тем кодом, что загрузился ранее (int13h, jmp/call).

На днях попадалась ссылка с описаниями прерываний, но описания от Ральфа Брауна, конечно, предпочтительнее.

Примеры загрузчиков - даже описаний - можно поискать в сети. Особенно на сайтах ассемблерной направленности (например, wasm.ru - там в архиве статей есть и что-то о начальной загрузке). В разделах FAQ и "Исходники" многих форумов есть примеры (например).

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

спасибо за ответ, появилось направление для поиска

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)