41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
|
1 | |
Создание mbr загрузчика19.08.2013, 21:18. Показов 6886. Ответов 35
Метки нет (Все метки)
Здравствуйте, читал/нашел много статей по этой теме, но есть пара вопросов.
Мне нужно вывести информацию о каждом разделе. Могу ли я переходить просто в начало каждого раздела и прибавляя могу ли посмотреть информацию о разделе?
0
|
19.08.2013, 21:18 | |
Ответы с готовыми решениями:
35
Создание загрузчика на ассемблере. Отладка загрузчика Загрузка вторичного загрузчика Нужен пример загрузчика ОС |
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
|
|
21.08.2013, 19:20 | 21 |
Catstail, Дело вкуса\понимания\привычки. Пожалуй, на этом разойдемся
Mikl___, Я так понимаю Вы любите искать изощренные способы решения простых задач?
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|
22.08.2013, 05:30 | 22 |
В точку, смотри здесь и здесь. Это неизбежно, так как количество способов которыми в ассемблере можно решить одну и туже проблему велико.
Не обязательно, операнд джампа может быть и непосредственным значением, как адресом, так и разницей адресов между точкой назначения и текущей командой, так и содержимым регистра или памяти, а обсуждать достоинства/недостатки ассемблерных диалектов не продуктивно, и тот и другой диалект имеют как своих фанатов так и противников
1
|
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
||||||
29.08.2013, 12:25 [ТС] | 24 | |||||
Может все таки подскажите как мне добраться до 1 секции и вывести информацию, я попробую по аналогии с другими секторами. Ибо как мне кажется вот это не правильно.(да и не работает)
0
|
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
|
|
29.08.2013, 14:37 | 25 |
Этот код затирает код, считанный из MBR BIOSом при старте компа.
Вам надо записать в МБР свой код с org 7c00h.
0
|
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
|
29.08.2013, 14:53 [ТС] | 27 |
Здесь имелась в виду часть(!) кода которая доходит до первой секции и считывает данные.
0
|
6769 / 2738 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
31.08.2013, 14:17 | 28 |
Так в MBR-же есть таблица. Где для первого сектора каждого раздела указаны его цилиндр/головка/сектор. Т.е. именно а таком виде, что нужны для заполнения регистров перед вызовом INT 13h для чтения.
Добавлено через 6 минут Ответь на вопрос - по каким адресам лежит твой исполняющийся код. И на вопрос - по каким адресам ты пытаешься навалить в ОЗУ содержимое сектора при чтении через INT 13h. И не сыплешь ли ты содержимое сектора прямо на голову своему исполняющемуся коду ?
0
|
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
|
03.09.2013, 10:39 [ТС] | 29 |
По адресу 7c00h
Вот я и пытаюсь попасть в эту таблицу и считать. Но плохо представляю как это сделать. По какому адресу "шагнуть".
0
|
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
|
|
03.09.2013, 14:03 | 30 |
Корд, вот как происходит загрузка ПК с винта:
BIOS считывает первый сектор (MBR) с винта в память по адресу 7c00h. Затем, начиная с этого адреса, выполняет код MBR. В MBR расположен код начального загрузчика и таблица логических дисков. Вам надо заменить код начального загрузчика первого сектора, не трогая таблицу, на свой код. Этот код должен считать другие сектор(а) винчестера, где предварительно вами записана программа чтения таблицы, в другую область памяти (4000h например) и передать на этот адрес управление (начать выполнять команды с адреса 4000h). На этом форуме уже было обсуждение похожей темы.
0
|
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
|
03.09.2013, 17:13 [ТС] | 31 |
Прошу вас читать внимательнее. Я знаю кто, зачем, как и куда загружается. Мне интересен сам код считывания таблицы, т.е как в нее попасть(по какому адресу расположена) и считать данные.
0
|
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
|
|
03.09.2013, 18:19 | 32 |
В поисковике: Структура MBR
0
|
6769 / 2738 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
04.09.2013, 00:26 | 33 |
Под таблицей ты имеешь ввиду таблицу разделов ?
Эта таблица загрузилась в память вместе с MBR, поскольку она находится с MBR в одном секторе диска, а BIOS читает целыми секторами. BIOS этот сектор 0:0:1 жесткого диска прочитал начиная с адреса 0:7C00 всего 0x200 байт и передал управление на адрес 0:7C00. А значит когда ты исполняешь код MBR таблица разделов уже в памяти лежит и начинается она с адреса 0:7C00+1BE = 0:7DBE.
0
|
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
|
04.09.2013, 15:08 [ТС] | 34 |
Т.е если я перейду по адресу 0:7DBE я окажусь в таблице разделов?
0
|
6769 / 2738 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
04.09.2013, 22:26 | 35 |
У тебя в голове винегрет какой-то.
Да, ты окажешься. Но ты будешь исполнять таблицу разделов как код, а какой смысл исполнять данные, как код с непредсказуемыми последствиями ? Помести в память свое имя/отчество и перейди на него. Процессор будет что-то исполнять, твое имя как код будет исполнять. Но какой в этом смысл ? Данные как код, как правило, просто бессмысленная последовательность команд. Тебе надо работать с данными, а не исполнять их как код. Читать эти данные, оперировать ими. А для чтения данных есть команда mov , к примеру. xor ax,ax mov ds,ax mov al,ds:7DBEh и вот у тебя в регистре AL первый байт таблицы разделов. Добавлено через 23 минуты Да, если ты записываешь что-то свое в физический сектор 0:0:1 винчестера, то это свое должно быть файлом длиной 512 байт. В этом файле должен быть твой код, начиная с начала файла, и таблица разделом в конце файла. Таблицу разделов нужно взять из оригинального физ.сектора 0:0:1 (MBR) винчестера. Если ты запишешь в физ.сектор 0:0:1 что-то свое без таблицы разделов, то искать ее уже бессмысленно - на компьютере ее больше нет, причем нигде. Это я объясняю, чтобы ты на еще одни грабли не наступил. Блин, у меня на винте MFM старом есть исходники моих загрузочных вирусов. Вот из них все бы было ясно - что и как. Да только на чем этот винт MFM, стандарта ST506, теперь прочитать ?
1
|
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
|
|||||||||||
08.10.2013, 17:09 [ТС] | 36 | ||||||||||
Добавлено через 1 час 14 минут Точнее вот этот проверьте, не выводит таблицу разделов=(
0
|
08.10.2013, 17:09 | |
08.10.2013, 17:09 | |
Помогаю со студенческими работами здесь
36
Свой mbr Как писать mbr код? Документация по формату ELF для написания загрузчика Не получается передать управление программе из MBR Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |