Падает загрузчик ОС

Тема в разделе "WASM.OS.DEVEL", создана пользователем acckiitvar, 24 окт 2011.

  1. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71
    Здравствуйте, вопрос такой: Занимался тут экспериментами над системой, перехватывая управление в точке 0:7С00(используя регистры dr0-dr7). И передавал его на свой код. Мой код забирал себе 1 ядро (и делал его недоступным для системы) и работал с ним, а основное ядро должно был вернуть управление загрузчику и запустить систему, но система не грузится. Падает после возвращения управления, где я понять не могу. Привезли мне тут игрушку Arium ECM-XDP3, пытался посмотреть ей. Забранное мной ядро выполняет мой код, а основное доходит до возврата управления и где то дальше уже умирает. К сожалению точную точку падения я обнаружить не смог( Поэтому вопрос, какие могут быть причины падения? я грешу на некорректную очистку регистров, но уверенности нет, где можно посмотреть какие они должны быть перед передачей управления? Загрузчик принадлежит системе Win 7 pro 32 bit. Сразу отмечу, мой код лежит в памяти и никто его не трогает кроме меня.
    И ковыряясь с помощью эмулятора 1 раз заставил появиться надпись: BOOTMGR is missing. Но с чистым биосом система грузится нормально.
    И еще 1 вопрос может кто сталкивался, Arium ECM-XDP3 не ловит начальную точку биос, машина hp, при включенном Ariume, просто пищит спикером и не грузится(пищит также как если нет биоса вообще), а если он отключен, то спокойно грузится. Мат. плата hp dc 7700, на какой то интеловской плате та же проблема(помню что чипсет 945й, но модель точно не помню).
    Я извиняюсь за поток сознания, но более осмысленно написать не могу. По ходу могу ответить на все вопросы.
     
  2. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Надеюсь, значения регистров соответствуют реальному режиму и стек проинициализирован корректно. Также надеюсь, что отладочное исключение происходит по выполнению команды в указанной точке и отлаживаемая программа уже находится в памяти. Непонятно, что мешает сохранить состояние по крайней мере основных регистров, а потом восстановить это состояние и вернуться в исходную точку. Первичный загрузчик Win 7 использует значение в регистре dl, транслируемое от BIOS через MBR-загрузчик.
     
  3. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    насколько я знаю у каждого ядра свои регистры. в том числе и отладочные. такчто невлезая в загрузочное ядро проследить работу не получиться.
     
  4. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71
    да влезать то придется, но как то хочется обойтись малой кровью, Arium глюковат маленько, и давать после него гарантии сложно.
     
  5. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71
    А можно это поподробнее?
    Это сто пудово, смотрел и ариумом, и проверял пост платой.
    Надо будет проверить, спасибо за информацию
     
  6. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71
    Восстановил я все регистры вообще, так же нифига не пашет
     
  7. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71
    Поразбирался я с загрузчиком, трассировка позволила выяснить что исполнение сворачивает в боковую ветку, которая посылает
    Код (Text):
    1. mov dx, 64h
    2. mov al, 0feh
    3. out dx, al
    и на этом все, посмотрел в нете это команда ребута процессора .
    Поставил на машину XP, все работает как надо. В общем это зхагрузчик что то проверяет и решает убить машину. У кого нибудь идеи есть что он проверяет? Буду используя отладчик разбираться теперь
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    а в cmos перед этим он что-нибудь пишет?
     
  9. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71
    Насколько я знаю нет, чип биос закрывает сам себя используя BIOS_CNTL регистр конфигурационного пространства PCI. Да и тот кусолк кода что тя просмотрел с портами особо не работал.
     
  10. acckiitvar

    acckiitvar Member

    Публикаций:
    0
    Регистрация:
    26 сен 2011
    Сообщения:
    71