Задался целью написать примитивнейший отладчик, который грузился бы с дискеты обычной. Где можно почитать о формате дисков и правильном к ним обращениям и о процессе отладки вообще. Написал пару-тройку вирусов, а силу ассемблера хочеться применять в других целях, в целях самообразования. Вот и придумал себе пищу для мозга. Натолкните меня на источники информации. Еще хотелось бы найти официальную документацию по программированию процессоров Intel и их совместимых. На сайте не их нашел ничего, может ссылку прямую дадите... Да ивообще расскажите что-нибудь о процессе написания отладчика. Заранее благодарен... Начну писать, так может и сайт свой сделаю по этой теме... Благо с английским у меня отлично поэтому документацию на английском тоже можете приводить...
Нашел какие-то упоминания про программную эмуляцию и виртуализаци..., а что есть по этой теме? Накачал документации от Intel по программированию их процессоров на английском, буду изучать английсктй яызк по ним... )) Программировать нифига не умею, поэтому решил грызть этот гранит с твердой стороны )) Я так решил, поэтому пинать за мой поступок не надо...
Ну, раз программировать не умеете, но хотите так сразу с дискеты и всё прочее, то изучайте пока только реальный режим (в котором MS DOS работала). В защищённом очень многое совсем по-другому. Ну а попытка охватить сразу всё точно ни к чему хорошему не приведёт. Найдите ещё список прерываний Ральфа Брауна (Ralf Brown's Interrupt List -- вроде так он называется), поскольку это, пожалуй, наиболее полный справочник по прерываниям BIOS, без которых в реальном режиме будет тяжко. Ну и умные книжки читайте по программированию на ассемблере под ДОС.
SII: Ха, ну мы даже уже умеем в таблице векторов прерываний свои адреса вставлять для их перехвата и резидентные пакостные штуки всякие делать, а вот хочеться посерьезнее что-нибудь... Ну, там, с LDT и GDT повозиться, с DR-регистрами и другими ))
MAPTbIH Так в том-то и дело, что для пакостей обычно хватает чужого кода, который разве что малость подправить приходится. А вот чтобы что-нибудь приличное сделать, надо куда больше знаний иметь; передиранием чужих исходников здесь уже не обойдёшься. Бывают, конечно, и исключения среди пакостей (супер-пупер вирусы какие-нить, например), но, как правило, пакостями занимаются малоквалифицированные "гении", которые по каким-либо причинам не способны к созидательному труду.
SII Я в начале темы так и написал, что хочу применять знание ассемблера в мирных целях и поэтому хочу начать со сложного! Чужой код никогда не рвал, а писал сам. Вот можешь глянуть: http://depositfiles.com/files/bilospniu. Все идеи полностью мои и нигде не прочитаны... Хватит уже, о пакостях, не пакостях, знании, не знании. Подскажите лучше что-нибудь по теме... Программная виртуализация и т.п. Хочу начать писать примитивный отладчик, который запускался бы первее всех программ после BIOS'а...
MAPTbIH Может, Вы всё сами и делали, откуда мне знать? Я говорил не о Вас лично, а о "кулхацкерах" вообще. Спецов-то среди них -- единицы... Ну да ладно, тема не о том всё же. Мне всё ж непонятно, что именно Вы хотите написать. Назвать это можно как угодно, но что оно должно уметь делать, кроме того, что грузиться раньше всех?
Из подобных отладчиков юзаю DOSBox - лучшего не нашел. Версия с дебугером гдето здесь была http://vogons.zetafleet.com/viewtopic.php?t=7323
bugaga Не хочу чужого, хочу сам писать для того чтобы много знать, это как велосипед самому изобрести и собрать, и даже всё равно что другие смеяться будут, зато у меня улыбка шире плеч будет SII Именно, хочу написать написать примитивнейший отладчик, в самом начале написано. Для начала хочу чтобы он просто имел первоначалные возможности отладки, пока даже без дизассемблирования, чтобы опкод следующей комманды хотя бы выводил, а потом улучшать потихоньку, улучшать...
MAPTbIH Только мне не совсем понятно, что он должен отлаживать, если он загружается без всяких осей сам по себе. Ну загрузился он, и что дальше?
Может быть загрузку самой оси? Надо признать, что на сегодняшний момент не существует ни одного инструмента, позволяющего отлаживать загрузку ОС на реальной машине.
нифига. досовский айс умеет делать теплый рестарт с брейком на 7c00 до перехода в протектед моде отлажывается всё на ура
z0mailbox О-о-о! Вот эти маты мне уже нравятся, чё за "айс"? Но опять же не хочу чужого, хочу сам писать! Ну вот собсно и хочеться чтобы дальше и в защищенке работала, и сразу вопрос: а возможно ли так сделать? Medstrax Именно, и более того хочеться чтобы программа еще и "живой" оставалась после загрузки оси, т.е. перехватывать как-нибудь все обращения к диску, памяти т.п... И я так понял, что по программированию процессоров Intel нет ничего кроме официальной документации на английском? И можно ли имея только её начать писать отладчик?
MAPTbIH Можно, но сложно. Это будет уже не загрузчик и не отладчик, а монитор виртуальных машин или вообще программный эмулятор. Причём более-менее приличную виртуализацию сделать очень и очень непросто из-за кривизны архитектуры что IA-32, что всего ПК в целом...
Мне представляется подобный отладчик эмулирующим не всю среду исполнения, а конкретные инструкции в пошаговом режиме, вплоть до переключения между режимами (RM, PM, VMM, SMM). Эмуляция инструкций нужна для обеспечения контроля над кодом. К примеру, если отлаживаемый код пишет в IDT(GDT, VMCS ....), мы, дабы не потерять контроль при возникновении каких-либо исключений, должны сэмулировать эту инструкцию, запомнив значение, которое пытались записать. Работать все это будет жутко медленно, но работать будет В общем реализовать такое можно, но лично я бы не взялся ЗЫ. C SMM конечно сложностей дофига, но сделать поддержку нескольких десятков распространенных чипсетов в общем реально. С выводом на экран то же самое. Или пусть по сетке фигачит, это видимо легче реализовать