Но ведь использование аппаратных отладчиков ничего не даст, так ведь ? Да и аппаратные отладчики - удовольствие не из доступных, а самому замутить слишком дорого.
Да и толку от микрокода если неизвестен его формат. Что зашифрован, что нет толку 0. Да и кто будет гробить свой проц. Скорее всего у каждой модели он свой.
Так ведь и хочу расшифровать формат. Если не зашифрован, то проще. Таблицы строить методом тыка - залил, упало - инструкция криво выполнилась, почему.
там скорее матрица настроек ключей как в FPGA, так, что это будет оооочень долго (зато изучиш структуру проца до винтиков)
asmlamo 2048 байт - это не весь микрокод. Это просто заплатка(и). Т.е. есть возможность заменить, пропатчить десяток команд. Что конечно не умаляет опасности. Кстати эти заплатки БИОС-то как-то делает, значит ключ имеется. Кстати и Винды, начиная с 2000-го тоже умеют заливать микрокод. Т.ч. не все потеряно.
Вопрос - зачем? Чтоб вирем проц грохнуть? Достаточно залить в него всякую белиберду. Если именно расшифровать интересно, то как это сделать не зная внутренней архитектуры (уже говорилось)? А если там в середке фпга (тоже говорилось) с доворотами (отдельными блоками фпу, скажем)? После расшифровки у вас будет куча бессмысленых чисел. И даже если вы расшифруете микрокод, улучшите его местами и зальете обратно, скорей всего вы потеряете совместимость в неописаных интелом в доке, но юзаемых местах. Если так охота ковырять проц, почему-бы не поковырять какой-либо опенсорцный? Заодно сложность задачи оценить.
Грохоть мне никогда ничего не надо было и не будет. Цель этого - изменить какую-льбо инструкцию или создать свою чтобы получить доступ в Ring0 безо всяких привилегий, аппаратными средствами. Расшифровать - понять как работает микрокод, узнать формат микрокоманд и как их кодить.
Вопрос зачем вам тогда Ring0 будет? А вообще соотношение целей и средствов для их достижения напоминает решение примера 2+2=? методом дифференцирования. Учитывая сложность сорцов простых самопальных процев и описаную архитектуру х86 я думаю мой пример слегка бледноват. То бишь стоит определиться, что вы хотите - получить доступ к Ring0 (опять-же в каких целях? Если это антиотладка, то есть вероятность грохнуть все процы на которых прога работать будет, если дебугер..) или разобраться как проц пашет..
Скорее всего код нельзя считать тупо потому что эта вся фигня связана с обновлением микрокода. Тоесть для обновление не требуется считывать старый код, значит этого способа просто нет.
Странный вопрос, это ведь не имеет значения. Ну задался я уже очень давно целью найти путь туда, но не в деструктивных целях.
В Ring0 или в микрокод (название микрокод - условность. Что этим словом называют - загадка за семью печатями. И я более чем уверен, что минимум треть проца пашет на секретность микрокода, тк есть и более серьезные исследователи-конкуренты, amd там..)? Кстати у amd по процам проскакивало что-то.. Не знаю имеет-ли это какое-то отношение к теме. Уж больно тяжелые пдф-ы, но ссылки были на процессоро-девелоперском сайте: http://buzbee.net/bitslice/AMD_CH1.pdf http://buzbee.net/bitslice/AMD_CH2.pdf http://buzbee.net/bitslice/AMD_CH3.pdf http://buzbee.net/bitslice/AMD_CH4.pdf http://buzbee.net/bitslice/AMD_CH5.pdf http://buzbee.net/bitslice/AMD_CH6.pdf http://buzbee.net/bitslice/AMD_CH7.pdf
Чтото мне крайне сомнительно, что весь проц помещается в 2K =) По поводу шифрования : скорей всего самое интересное всётаки содержиться в пресловутом микрокоде (ну только не в этих 2К, хотя они не менее интересны) и если железную часть можно умудриться запихнуть под микроскоп и посмотреть как же она тама сделана то соответсвенно логично софтовую, обновляемую часть - шифровать. Хотя если расшифровка аппаратно происходт то китайцы рано или поздно ключ получат (чтото не веристься что за расшифровку отвечает просто набор из пары тысяч или сотен тысяч транзисторов, хотя кто этих буржуинов знает до чего ещё могут додуматься для удешеления производства: ведь главное не наука, а прибыль ) =) По поводу пожечь - маловероятно, да и код (который через апдейты заливатся) остаётся в проце до ближайшего выключения питания или ресета, а дальше его перезаливать нада, а ниже думаю полный анрыл попасть =) В проце, канэчна, скорей всего, храниться в расшифрованном виде то, что в него залилось, вот это былобы интересно прочитать (если оно шифрованное, а не просто подписанное). =) http://en.wikipedia.org/wiki/Microcode P.S. тут наткнулся на http://kerneltrap.org/node/2678 а что значит +++ http://www.nix.ru/news/news_viewer.html?id=150390 - всё новое = хорошо забытое старое =) ++++ А вдруг внутрях есть чтото на подобе shadow rom и в апдейте просто указываем куда что прописать ?
asmlamo Заливается через CPUID/WRMSR, последняя привилегированная. Врядле, может сикнатуры считывает тока его. Еслибы ещё знать что за модуль..
добавление своих команд вещь хорошая, но только на своих компах и реализуема, тоесть только свои программы и смогут их юзать. Хотя думаю декодировщик (транслятор) зашит наглухо, а прошивки лишь меняют сами МОПы. А попытка улучшить родные команды лишь приведет к нестабильности либо тормозам выполнения, не думаю что не зная тонкостей и условностей архитектуры получится укоротить конвеер, зато тормоза гарантированы