Этот репозиторий содержит структуру, используемую во время нашей работы по обратной технике, микрокод AMD K8 и K10. Он включает в себя ассемблер и дискемблер, а также примеры программ, реализованные с использованием этих инструментов. Мы также предоставляем нашу пользовательскую написанную минимальную операционную систему, которая может быстро применять и проверить обновления микрокода на процессорах AMD.
Здесь предоставлены файлы, возникающие из исследований и предназначены для использования только для исследовательских целей. Они скомпилированы только с частичным знанием о внутренних органах микроархитектуры и могут содержать ошибки, а также непреднамеренное поведение. Все файлы предоставляются как есть без каких -либо гарантий и поддержки. Мы не несем никакой ответственности за их использование.
Набор инструкций x86 является сложным и содержит множество устаревших инструкций, сохраняющихся только для обратной совместимости. Таким образом, редко используемые или сложные инструкции декодируются в программном обеспечении, в то время как критические инструкции, критические, обрабатываются аппаратными декодерами. Независимо от того, чтобы быть декодированным аппаратным или программным обеспечением, инструкции в конечном итоге переводятся в другой набор инструкций с именем RISC86, который имеет фиксированную длину инструкции и подходит для быстрой, суперкаларной обработки. Помимо программного декодирования микрокода может использоваться для отключения дефектных функций процессора и обработки исключений на самом низком уровне.
Содержание этого хранилища отражает практические результаты наших исследовательских усилий. Подробности приведены в наших документах:
Обратный инженер x86 Процессор MicroCode опубликован в процессе 26 -го Симпозиума безопасности USENIX Security
Исследовательский анализ микрокода в качестве строительного блока для системной защиты, опубликованная в ходе разбирательства 25 -й конференции ACM по компьютерной безопасности и связи с коммуникациями
Папка USENIX17 содержит результаты нашей статьи USENIX 2017, что наиболее важно, обновления и триггеры для наших доказательств концепций, а также драйвер обновлений, позволяющий загружать произвольные обновления в систему Linux. Более подробная информация приведена в соответствующем файле readme.
Наша минимальная операционная система содержится в папке Angry_OS. Для получения подробной информации о том, как построить и использовать эту систему, см. Файл Readme в этой папке.
Структура, которую мы использовали во время нашей работы, находится в папке Ucodeapi. Примеры того, как используется этот API, см. Примеры сценариев, представленных в этой папке. API проверяется только под Python 2.
В папке «тематические исследования» содержится тематические исследования, представленные в нашей бумаге CSS 18 в форме RTL.