C ++ выполнить код из файловой системы - PullRequest
4 голосов
/ 13 июня 2011

Прежде всего, мне было нелегко выяснить название, и это немного двусмысленно, ну да ладно.

Хорошо, поэтому у меня есть смешанная программа загрузчика c ++ & asm.Я могу скопировать его на свой mbr и запустить.Единственная проблема, которую я имею, состоит в том, что mbr очень маленький.Я предполагаю, что целью этого является только вызов внешнего кода, написанного где-то еще на диске.Моя проблема в том, что я не уверен, как получить к этому доступ.Я имею в виду, что я могу поместить данные туда, я просто понятия не имею, как программно получить доступ к этим данным, так как по сути на диске не будет «файловой системы», просто произвольный код.

I 'Я искал в сети, но учебники по настоящему низкоуровневой разработке кажутся скудными.

Я даже за библиотеку c ++, если таковая существует.

Ответы [ 3 ]

4 голосов
/ 13 июня 2011

Старый добрый BIOS вызывает , для ПК. Если ваша плата не является ПК - вам нужна информация от производителя платы о том, как получить доступ к контроллеру IDE / SATA.

2 голосов
/ 13 июня 2011

BIOS устанавливает несколько обработчиков прерываний перед запуском кода в MBR.Один из них может использоваться для таких вещей, как чтение / запись секторов непосредственно с жесткого диска без ОС, драйвера устройства или файловой системы.

Это прерывание 19 ( 13H какэто более широко известно).

Вам понадобится использовать это для чтения кода, а затем просто jmp в него.

2 голосов
/ 13 июня 2011

Не зная платформы, трудно дать что-либо, кроме самого общего обзора.

Первоначальный загрузочный код, как правило, просит системное встроенное ПО скопировать дополнительные блоки с диска в память, а затем вызвать вызываемый код. В системе ПК это означало бы вызов BIOS.

...