Разработка загрузочного отладчика...

Тема в разделе "WASM.PROJECTS", создана пользователем MAPTbIH, 25 ноя 2008.

  1. MAPTbIH

    MAPTbIH Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    84
    Задался целью написать примитивнейший отладчик, который грузился бы с дискеты обычной. Где можно почитать о формате дисков и правильном к ним обращениям и о процессе отладки вообще. Написал пару-тройку вирусов, а силу ассемблера хочеться применять в других целях, в целях самообразования. Вот и придумал себе пищу для мозга. Натолкните меня на источники информации. Еще хотелось бы найти официальную документацию по программированию процессоров Intel и их совместимых. На сайте не их нашел ничего, может ссылку прямую дадите... Да ивообще расскажите что-нибудь о процессе написания отладчика. Заранее благодарен... Начну писать, так может и сайт свой сделаю по этой теме... Благо с английским у меня отлично поэтому документацию на английском тоже можете приводить...
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    MAPTbIH
    на этом сайте
    https://wasm.ru/forum/viewtopic.php?id=27626
     
  3. MAPTbIH

    MAPTbIH Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    84
    Нашел какие-то упоминания про программную эмуляцию и виртуализаци..., а что есть по этой теме? Накачал документации от Intel по программированию их процессоров на английском, буду изучать английсктй яызк по ним... )) Программировать нифига не умею, поэтому решил грызть этот гранит с твердой стороны )) Я так решил, поэтому пинать за мой поступок не надо...
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Ну, раз программировать не умеете, но хотите так сразу с дискеты и всё прочее, то изучайте пока только реальный режим (в котором MS DOS работала). В защищённом очень многое совсем по-другому. Ну а попытка охватить сразу всё точно ни к чему хорошему не приведёт.

    Найдите ещё список прерываний Ральфа Брауна (Ralf Brown's Interrupt List -- вроде так он называется), поскольку это, пожалуй, наиболее полный справочник по прерываниям BIOS, без которых в реальном режиме будет тяжко.

    Ну и умные книжки читайте по программированию на ассемблере под ДОС.
     
  5. MAPTbIH

    MAPTbIH Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    84
    SII:
    Ха, ну мы даже уже умеем в таблице векторов прерываний свои адреса вставлять для их перехвата и резидентные пакостные штуки всякие делать, а вот хочеться посерьезнее что-нибудь... Ну, там, с LDT и GDT повозиться, с DR-регистрами и другими ))
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    MAPTbIH

    Так в том-то и дело, что для пакостей обычно хватает чужого кода, который разве что малость подправить приходится. А вот чтобы что-нибудь приличное сделать, надо куда больше знаний иметь; передиранием чужих исходников здесь уже не обойдёшься. Бывают, конечно, и исключения среди пакостей (супер-пупер вирусы какие-нить, например), но, как правило, пакостями занимаются малоквалифицированные "гении", которые по каким-либо причинам не способны к созидательному труду.
     
  7. MAPTbIH

    MAPTbIH Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    84
    SII
    Я в начале темы так и написал, что хочу применять знание ассемблера в мирных целях и поэтому хочу начать со сложного! Чужой код никогда не рвал, а писал сам. Вот можешь глянуть: http://depositfiles.com/files/bilospniu. Все идеи полностью мои и нигде не прочитаны... Хватит уже, о пакостях, не пакостях, знании, не знании. Подскажите лучше что-нибудь по теме... Программная виртуализация и т.п. Хочу начать писать примитивный отладчик, который запускался бы первее всех программ после BIOS'а...
     
  8. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    MAPTbIH
    Может, Вы всё сами и делали, откуда мне знать? Я говорил не о Вас лично, а о "кулхацкерах" вообще. Спецов-то среди них -- единицы... Ну да ладно, тема не о том всё же.

    Мне всё ж непонятно, что именно Вы хотите написать. Назвать это можно как угодно, но что оно должно уметь делать, кроме того, что грузиться раньше всех?
     
  9. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Из подобных отладчиков юзаю DOSBox - лучшего не нашел. Версия с дебугером гдето здесь была http://vogons.zetafleet.com/viewtopic.php?t=7323
     
  10. MAPTbIH

    MAPTbIH Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    84
    bugaga
    Не хочу чужого, хочу сам писать :) для того чтобы много знать, это как велосипед самому изобрести и собрать, и даже всё равно что другие смеяться будут, зато у меня улыбка шире плеч будет :)
    SII
    Именно, хочу написать написать примитивнейший отладчик, в самом начале написано. Для начала хочу чтобы он просто имел первоначалные возможности отладки, пока даже без дизассемблирования, чтобы опкод следующей комманды хотя бы выводил, а потом улучшать потихоньку, улучшать...
     
  11. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    MAPTbIH
    какже он её без дизассемблирования выведет?
     
  12. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    MAPTbIH
    ээ, может быть дизасм длинн? x)
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    MAPTbIH
    Только мне не совсем понятно, что он должен отлаживать, если он загружается без всяких осей сам по себе. Ну загрузился он, и что дальше?
     
  14. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Может быть загрузку самой оси? Надо признать, что на сегодняшний момент не существует ни одного инструмента, позволяющего отлаживать загрузку ОС на реальной машине.
     
  15. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    нифига. досовский айс умеет делать теплый рестарт с брейком на 7c00
    до перехода в протектед моде отлажывается всё на ура
     
  16. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Замечательно. А дальше что? Медитировать будем?
     
  17. MAPTbIH

    MAPTbIH Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    84
    z0mailbox
    О-о-о! Вот эти маты мне уже нравятся, чё за "айс"? Но опять же не хочу чужого, хочу сам писать!
    Ну вот собсно и хочеться чтобы дальше и в защищенке работала, и сразу вопрос: а возможно ли так сделать?
    Medstrax
    Именно, и более того хочеться чтобы программа еще и "живой" оставалась после загрузки оси, т.е. перехватывать как-нибудь все обращения к диску, памяти т.п... И я так понял, что по программированию процессоров Intel нет ничего кроме официальной документации на английском? И можно ли имея только её начать писать отладчик?
     
  18. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    http://rr0d.droids-corp.org/
     
  19. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    MAPTbIH
    Можно, но сложно. Это будет уже не загрузчик и не отладчик, а монитор виртуальных машин или вообще программный эмулятор. Причём более-менее приличную виртуализацию сделать очень и очень непросто из-за кривизны архитектуры что IA-32, что всего ПК в целом...
     
  20. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Мне представляется подобный отладчик эмулирующим не всю среду исполнения, а конкретные инструкции в пошаговом режиме, вплоть до переключения между режимами (RM, PM, VMM, SMM). Эмуляция инструкций нужна для обеспечения контроля над кодом. К примеру, если отлаживаемый код пишет в IDT(GDT, VMCS ....), мы, дабы не потерять контроль при возникновении каких-либо исключений, должны сэмулировать эту инструкцию, запомнив значение, которое пытались записать. Работать все это будет жутко медленно, но работать будет :)
    В общем реализовать такое можно, но лично я бы не взялся :)
    ЗЫ. C SMM конечно сложностей дофига, но сделать поддержку нескольких десятков распространенных чипсетов в общем реально. С выводом на экран то же самое. Или пусть по сетке фигачит, это видимо легче реализовать :)