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

Discussion in 'WASM.PROJECTS' started by MAPTbIH, Nov 25, 2008.

  1. MAPTbIH

    MAPTbIH Member

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

    wsd New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2007
    Messages:
    2,824
    MAPTbIH
    на этом сайте
    https://wasm.ru/forum/viewtopic.php?id=27626
     
  3. MAPTbIH

    MAPTbIH Member

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

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    Ну, раз программировать не умеете, но хотите так сразу с дискеты и всё прочее, то изучайте пока только реальный режим (в котором MS DOS работала). В защищённом очень многое совсем по-другому. Ну а попытка охватить сразу всё точно ни к чему хорошему не приведёт.

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

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

    MAPTbIH Member

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

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    MAPTbIH

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

    MAPTbIH Member

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

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    MAPTbIH
    Может, Вы всё сами и делали, откуда мне знать? Я говорил не о Вас лично, а о "кулхацкерах" вообще. Спецов-то среди них -- единицы... Ну да ладно, тема не о том всё же.

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

    bugaga New Member

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

    MAPTbIH Member

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

    wsd New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2007
    Messages:
    2,824
    MAPTbIH
    какже он её без дизассемблирования выведет?
     
  12. t00x

    t00x New Member

    Blog Posts:
    0
    Joined:
    Feb 15, 2007
    Messages:
    1,921
    MAPTbIH
    ээ, может быть дизасм длинн? x)
     
  13. SII

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    MAPTbIH
    Только мне не совсем понятно, что он должен отлаживать, если он загружается без всяких осей сам по себе. Ну загрузился он, и что дальше?
     
  14. Medstrax

    Medstrax Забанен

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

    z0mailbox z0

    Blog Posts:
    0
    Joined:
    Feb 3, 2005
    Messages:
    635
    Location:
    Russia СПБ
    нифига. досовский айс умеет делать теплый рестарт с брейком на 7c00
    до перехода в протектед моде отлажывается всё на ура
     
  16. Medstrax

    Medstrax Забанен

    Blog Posts:
    0
    Joined:
    Jul 18, 2006
    Messages:
    673
    Замечательно. А дальше что? Медитировать будем?
     
  17. MAPTbIH

    MAPTbIH Member

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

    reverser New Member

    Blog Posts:
    0
    Joined:
    Jan 27, 2004
    Messages:
    615
    http://rr0d.droids-corp.org/
     
  19. SII

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

    Blog Posts:
    0
    Joined:
    Oct 31, 2007
    Messages:
    1,483
    Location:
    Подмосковье
    MAPTbIH
    Можно, но сложно. Это будет уже не загрузчик и не отладчик, а монитор виртуальных машин или вообще программный эмулятор. Причём более-менее приличную виртуализацию сделать очень и очень непросто из-за кривизны архитектуры что IA-32, что всего ПК в целом...
     
  20. Medstrax

    Medstrax Забанен

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