Как известно у современных процессоров можно менять микрокод. Также можно менять микрокод например у CD-RW приводов. В связи с этим у меня возникли такие вопросы: 1.) Например читая Гука, а также стандарт ATAPI складывается мнение, что микрокод можно записать в процессор или ATAPI-привод, но прочитать нельзя. Получается типа микрокод это write-only. Как то это странно. Кто-нибудь знает можно ли считать текущий микрокод с процессора или привода CD-RW? 2.) Кто-нибудь занимался микропрограммированием процессоров или CD-RW приводов? Можно ли например сделать чтобы вместо инструкций NOP или UD2 выполнялись какие то инструкции или еще что-то в этом роде. Где-нибудь можно прочитать о формате микрокода для определенной модели процессора или хотя-бы что то в общих чертах. 3.) Правильно ли я понимаю что микрокод CD-RW приводов это в принципе просто код для контроллера привода, а для процессора микрокод это что то более низкоуровневое, показывающее например как переключать транзисторы в процессоре.
Помотри вот эти статьи http://www.wasm.ru/article.php?article=dvdpatch http://www.wasm.ru/article.php?article=microcode
Icebp Если ты про Пентиум, то там можно лишь патчить микрокод. Под это отведено 2 килобайта. Эти патчи хранятся в продвинутых БИОС-ах. ВИН2000 делает этот патч на автомате - именно с этим связана пресловутая легенда, что 98-й не работает на новых процессорах. Введено это все было после известного случая с багом в П-1. Подробности правда я не знаю. Про патчи в БИОС-е вычитал, когда занимался подключением 40 гигового диска, а патчи в 2000-м нашел случайно в реестре, правда не записал где это было....
ProgramMan Я эти статьи читал раньше, но они не дают ответы на мои вопросы. Так например остается непонятным можно ли как то считать микрокод. В статье про прошивку DVD сказано, что прежняя прошивка как то была вытащена из привода, а как непонятно, может быть она была вытащена не из привода, а взята с сайта изготовителя? Вот кстати еще вопрос: в статье про микропрограммирование процессоров сказано, что микрокод зашифрован. Так он зашифрован или его формат засекречен или же просто в прошивке есть контрольная сумма?
Ха, точно есть в update.sys , и в драйвере строка HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor .
В статьях пишут , что зашифрован , а расшифровка происходит в самом проце , а какой там алгоритм наверное никто не видел
в официальной документации сказано зашифрован. Где и как расшифровывается ессно тишина. Также ни слова о том что он в действительности может делать - написано исправляет errata. А как и насколько сильно можно микрокодом изменить поведение проца - тишина.
Хм , вот неплохая статья на русском , типа целостность обеспечиваеться контрольной суммой . А на http://microcodes.sourceforge.net посмотрите pdf-ку , там есть глава типа "анализ системы шифрования микрокода" (eng)
Про DVD все понятно. Чтобы конкуренты(китайцы) секреты не украли, используют наверное микропроцессор с командами в флешке с запретом чтения. Но вообще-то странно, т.к. прошивки и программу для записи дают свободно, но возможно, что тоже зашифровано. Что касается БИОС-а, то там тоже ведь все свободно - можно поисследовать. Сама прошивка - это слегка модифицированный lzh-архив, для которого есть готовые утилиты распаковки для AWARD например. БИОС там совершенно не шифрованный - я свой патчил под 40 гиговый хард. А потом даже заработал на пиво, перешивая глючный Атлон, но котором флеш слетала каждые полгода. Есть еще БИОС-ы(прошивки) и в видеокартах
Вполне вероятно, что микрокод в процессорах - это микропрограммы для RISC ядра - CISC команды вроде loop/scas/pop состоят из некоторого количества микроопераций, в отличае от простых команд вроде mov/add. А то, что производители прикладывают специальные усилия для того что бы хранить всё это дело в тайне, вроде бы обсуждалось на форуме раньше.
вот копался. случайно заметил слово Microde посмотри, может чего есть нужного, сам не смотрел... http://www.securiteam.com/securityreviews/5FP0M1PDFO.html
и, кстати, то, что БИОС запакован LZH - true. т.к. там даже сигнатуры есть. не запакован только бут-блок