Eugene
Vladimir
Vladimir
На некоторых матерях и сейчас не проверяют, стопудняк.
Это часть системы загрузки, обозначающий, что данные находящиеся в этом секторе — код, который надо выполнить! Сигнатура не относится к дос, фс, ебучиму майкрософту или ещё чему, это ебучий маркер обозначающий загружаемость нулевого мать его сектора диска! Или ты думаешь, что если блять на компе установлен линукс или фряха в легаси режиме, то этой метки не будет? Так я тебя удивлю блять! БУДЕТ!
Vladimir
И сигнатура, и маркер 0x80 в нужном месте фейковой таблицы разделов будет как раз для удовлетворения китайских биосов, в той же фряхе, стоящей на цельном диске
Vladimir
Это обычный костыль
Пиздец
Vladimir
В 1981 году про MBR слыхом не слыхивали, есливчо
BIOS (до MBR)
Править
• BIOS проводит начальную инициализацию оборудования (POST).
• BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS)
[в данном описании рассматривается только случай загрузки с жёсткого диска].
• BIOS считывает один сектор (512 байт), то есть непосредственно MBR, который находится по адресу: «цилиндр 0, головка 0, сектор 1»[a], и помещает его в область памяти по физическому адресу 0x7C00.
• BIOS проверяет, что этот сектор оканчивается сигнатурой 0АА55h (байты 55h,0AAh).
[если это не так, то управление возвращается обратно в BIOS].
• BIOS передаёт управление по физическому адресу 0x7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».
Aiwan \ (•◡•) / _bot
BIOS (до MBR)
Править
• BIOS проводит начальную инициализацию оборудования (POST).
• BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS)
[в данном описании рассматривается только случай загрузки с жёсткого диска].
• BIOS считывает один сектор (512 байт), то есть непосредственно MBR, который находится по адресу: «цилиндр 0, головка 0, сектор 1»[a], и помещает его в область памяти по физическому адресу 0x7C00.
• BIOS проверяет, что этот сектор оканчивается сигнатурой 0АА55h (байты 55h,0AAh).
[если это не так, то управление возвращается обратно в BIOS].
• BIOS передаёт управление по физическому адресу 0x7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».
значит сначало читает, а потом проверяет на аа55
Eugene
BIOS (до MBR)
Править
• BIOS проводит начальную инициализацию оборудования (POST).
• BIOS определяет, с какого устройства производить дальнейшую загрузку: дискета, флеш-накопитель, жёсткий диск и т. д. (выбор устройства зависит от версии и от настроек BIOS)
[в данном описании рассматривается только случай загрузки с жёсткого диска].
• BIOS считывает один сектор (512 байт), то есть непосредственно MBR, который находится по адресу: «цилиндр 0, головка 0, сектор 1»[a], и помещает его в область памяти по физическому адресу 0x7C00.
• BIOS проверяет, что этот сектор оканчивается сигнатурой 0АА55h (байты 55h,0AAh).
[если это не так, то управление возвращается обратно в BIOS].
• BIOS передаёт управление по физическому адресу 0x7C00 (то есть сектору MBR), предварительно записав в регистр DL номер диска, с которого этот сектор считан. Для первого жёсткого диска это значение будет равно 80h (128 в десятичной системе), для дисковода A: равно 0. Кроме того, Plug-n-Play BIOS может записать в регистры ES:DI указатель на структуру «$PnP».
Чел говорят, что эта метка была не всегда. Вот и всё. И что некоторые биосы и сейчас кладут на эту метку. Вполне можно такое допустить.
Eugene
Но это скорее исключение.
s54820
Вы лучше скажите, что BIOS-то эмулирует, когда бутсектор патчит — FDD или HDD?
s54820
Eugene
Anonymous
mov dx,page1
mov [tablepage1+2],dx
shl word [tablepage1+2],4
mov eax,tablepage1
mov cr3,eax
mov eax,cr0
bts eax,31
mov cr0,eax
mov word [0x000500],0x0f31
mov word [0x000401],0x0f32
mov word [0x000302],0x0f33
jmp $
msg1 db '[*] MBR in Protected Mode',0x0a,'[*] System Halt'
page1 db 000000011b,0x00,0x00,0x70
page2 db 000000011b,0x00,0x40,0x1f
page3 db 000000011b,0x00,0x28,0x23
page4 db 000000011b,0x00,0x00,0xb8
page5 db 000000011b,0x00,0x00,0xb8
page6 db 000000011b,0x00,0x00,0xb8
tablepage1 db 0x03,0x00,0x00,0x00
Anonymous
правильно ли ?
Anonymous
я хочу вывести с разных страниц сообщение
Anonymous
получается мне надо так думать При каждом обращении к памяти виртуальный адрес делится на три части, раз-
меры которых - 10-10-12 (слева направо).
Anonymous
ну и получается я записываю его но его сложно записывать я еще не тестировал и не знаю правильно я сделал или нет
Anonymous
но структуры я думаю правильно составил
Anonymous
наверное надо использовать после mov cr0,eax jmp far с виртуальным адресом
Anonymous
хотя не только jmp near far не надо
Anonymous
Вот я покрыл своё адресное пространство а как к нему обращаться
Anonymous
Как изменить eip если уже в силу вошёл paging
Anonymous
начать виртуальное адресное пространство со следующего 4 килобайта
Anonymous
И дальше прыгнуть туда и от туда уже закрыть дырку физическую?
Anonymous
вопрос еще такой почему uefi использует формат PE а не какой то свой или другой ?
Eugene
Anonymous
Хахааххаха
Anonymous
:)
Anonymous
Кто то помодет paging?)
Anonymous
поможет*
Anonymous
Прочитал раздел книги прочитал статьи а в практики я ноль
Anonymous
По paging
Anonymous
я не видел такого чтобы uefi efi использовал elf
В смысле, Я не против, если бы EFI Forum использовал бы elf для стандарта.
Aiwan \ (•◡•) / _bot
майки видимо деньги за это заплатили, им нужней, а вот ельф из другой оперы
Деньги вряд ли, а вот первыми написать предложение структуры исполняемых файлов...
Eugene
А не похрен ли, какой там формат? Вот реально...
Anonymous
Нет не похрен
Anonymous
Формат это структура
Anonymous
А не 'похрен'
Eugene
Ну вот ты код написал. То ли оно будет у тебя в итоге в PE, то ли в ELF — что это меняет?
Aiwan \ (•◡•) / _bot
Anonymous
А как мне обратиться к видео памятт
Anonymous
не так все просто с paging
Anonymous
Anonymous
вот структура:
page1 db 000000011b,0x00,0x00,0x70
page2 db 000000011b,0x00,0x40,0x1f
page3 db 000000011b,0x00,0x28,0x23
page4 db 000000011b,0x00,0x80,0x0b
page5 db 000000011b,0x00,0x80,0x0b
page6 db 000000011b,0x00,0x80,0x0b
tablepage1 db 0x03,0x00,0x00,0x00
Aiwan \ (•◡•) / _bot
бошем всетаки пользуешься
Anonymous
ну да а почему бы и нет
Anonymous
здесь он хорошо выполняет свою задачу
Anonymous
нет человек писал зачем мне 0x0b8000
Anonymous
я ему ответил ну как по другому то
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
кстати, работая с фрейм буфером ефи, можно сначало потренироваться в линухе или досе, там аналогичные принцыпы. но линух будет наверное удобней в плане отладки и просмотра результата сразу /правки кода
Vladimir
Anonymous
вопрос такой у меня вот есть 4 задачи процессор в многозадачности как сделать так чтобы был обработчик который будет каждые 5 секунд перехватывать управление и передовать управление другой задаче
какое должно быть исключение которое бы побуждало бы процессор переклчить на обработчик
переключить*
Sevapp
а это вообще нормальная практика по времени передавать управление другому процессу?
Anonymous
да так многозадачность рботает
Anonymous
по определенному интервалу передавать управление последовательно каждому потоку
Sevapp
ну интервал это можно не только во времени измерять, а еще там в тактах
Sevapp
почему современные x64 позволяют float/double делить на 0?
Aiwan \ (•◡•) / _bot
мож потому что есть средства это детектировать?
Sevapp
Vladimir
Aiwan \ (•◡•) / _bot
почему современные x64 позволяют float/double делить на 0?
тогда хотел бы уточнить, что ты подразумеваешь под словом позволяют? процы себе ничего не могут позволить, это машина. позволяет человек, если он захочет он поделит на ноль, если это программно ноль вычислился, то прогер добавит доп код чтоб избежать краша/зависа