Alternate Instruction Set (AIS) является второй 32-битный набор инструкций архитектуры можно найти в некоторых процессоров x86 , сделанных VIA Technologies . На этих процессорах VIA C3 доступ ко второму скрытому режиму процессора осуществляется путем выполнения инструкции x86 ALTINST
( 0F 3F
). Если режим AIS включен, процессор выполнит JMP EAX [1] и начнет выполнение инструкций AIS по адресу регистра EAX . Использование АИС позволяет нативный доступ к Centaur Technology -разработана RISC ядро в процессоре. [2]
Формат инструкции
Номер AIS | x86 имя |
---|---|
R0 | EAX |
R1 | ECX |
R2 | EDX |
R3 | EBX |
R4 | ESP |
R5 | EBP |
R6 | ESI |
R7 | EDI |
R8 ‒ R15 | … |
Производитель описывает альтернативный набор инструкций как «расширенный набор целочисленных, MMX , с плавающей запятой и 3DNow! Инструкций вместе с дополнительными регистрами и некоторыми более мощными формами инструкций». [1] Каждая инструкция AIS имеет префикс из 3-байтовой последовательности, 0x8D8400
за которой следует 32-битная инструкция; эта форма префикса для инструкций AIS делает их похожими на инструкции x86 Load Effective Address ( LEA
). В 2018 году исследователь Кристопер Домас сообщил, что префикс 0x620405
(x86 BOUND
) также работал.
Сделанное в 2002 году предложение о добавлении поддержки AIS в Netwide Assembler (NASM) было частично отклонено в 2005 году на том основании, что NASM был ассемблером x86, а AIS - отдельным набором инструкций. [3] Ассемблер доступен из исследования Домаса за 2018 год. [4]
В 2007 году патент назвал некоторые инструкции микрокода , как load
и store
в / из основной памяти, а также loadPRAM
и storePRAM
в / из приват-памяти внутри процессора. [5] Кентавр Technologies группа по проверке, в 2014 году бумаги о VIA Nano , включал несколько коротких списков микро-инструкций , включая ADDIG
, JLINK
, JMP_ALL
, MVIG
, NLOOPE
, STORE_PRAM
, плюс микроопераций XADD
и XSUB
. Микро-операции были показаны иметь формат , который включает в себя поля opcode
, exec unit
, src width
, src1
, src2
, dest width
, dest
, write flags?
и end routine?
. [6]
Доступность
В режиме x86 доступность альтернативного набора команд можно определить, выполнив CPUID с регистром EAX, установленным на, 0xc0000001
а затем проверив регистр EDX. Если бит EDX 0 установлен в 1, то поддерживается AIS. Если бит 1 EDX также установлен в 1, то включен AIS. [7] Если ЦП поддерживает AIS, то его статус можно проверить и изменить с помощью регистров , зависящих от модели , путем проверки и настройки регистра управления функциями (FCR, регистр 0x1107). Если бит 0 (" ALTINST
") установлен в 1, то AIS включен. [7]
Функция KiGetFeatureBits()
инициализации ядра Microsoft Windows NT заранее отключает режим альтернативных инструкций при загрузке. [8] Если команда ALTINST
перехода x86 выполняется при отключенном режиме AIS, то процессор сгенерирует исключительную ситуацию с недопустимой инструкцией. [9] Установка бита включения AIS требует привилегированного доступа и должна быть установлена с использованием последовательности чтения-изменения-записи . [9]
Повышение привилегий
В 2018 году Кристофер Домас обнаружил, что некоторые процессоры Samuel 2 поставлялись с включенным по умолчанию альтернативным набором инструкций и что, выполняя инструкции AIS из пользовательского пространства , можно было получить повышение привилегий с кольца 3 до кольца 0. [4] У Домаса был частично обратный спроектировал набор инструкций AIS с использованием автоматического фаззинга для кластера из семи тонких клиентов . [10] Домас использовал термины «глубоко встроенное ядро» (DEC) плюс «глубоко встроенный набор инструкций» (DEIS) для набора команд RISC, «инструкция запуска» для ALTINST
, «команда моста» для оболочки префикса x86, «глобальная конфигурация». register "Регистр управления функциями (FCR)" и задокументировал повышение привилегий с именем " Rosenbridge ". [4]
Рекомендации
- ^ a b Альтернативный набор инструкций (PDF) . ВИА Эден (Отчет). Спецификация процессора встроенной системной платформы. Ноябрь 2002. с. 70‒71 . Проверено 10 августа 2018 .
- ^ Стиллер, Андреас (22 января 2003 г.). "VIAs Prozessor der siebten Generation" [процессор VIA седьмого поколения]. Heise Online (на немецком языке). Heinz Heise . Проверено 12 августа 2018 .
Также… kann man Nehemiahs RISC-artigen Core auch native programmieren (AIS: Альтернативный набор инструкций). Auch hier wird sich zeigen, ob findige Programmierer das für den einen oder anderen Treiber nutzen können, um hier mehr Performance herauszukitzeln.
- ^ «# 21 добавить поддержку АИС Кентавра» . Сетевой ассемблер . 18 декабря 2002 . Проверено 12 августа 2018 г. - через Sourceforge.
- ^ а б в Дома, Кристофер. «Розенбридж: аппаратные бэкдоры в процессорах x86» . Проверено 10 августа 2018 .
- ^ Патент США 20080256336A1 , Генри, Г. Гленн ; Колин Эдди и Родни Э. Хукер и др., «Микропроцессор с частным ОЗУ с микрокодом», опубликовано 16 октября 2008 г., выпущено 2 ноября 2010 г.
- ^ Дэвис, Джаред; Слободова, Анна; Мечи, Сол (20 апреля 2016 г.). «Проверка микрокода - еще одна часть головоломки проверки микропроцессора» (PDF) . Проверено 14 августа 2018 . Цитировать журнал требует
|journal=
( помощь ) - ^ а б Функции команд Centaur Extended CPUID (PDF) . Техническое описание процессора встроенной системной платформы VIA Eden-N (отчет). 22 октября 2004 г. с. 20, 74 . Проверено 10 августа 2018 .
- ^ Microsoft. "kernlini.c" . Исходный код ядра Microsoft Windows NT . Проверено 14 августа 2018 .
KiGetFeatureBits ()… // Отключить бит 0, который управляет функцией Cyrix ALTINST.
- ^ а б Альтернативное исполнение инструкций (PDF) . Техническое описание процессора VIA C3 Samuel 2 (отчет). Октябрь 2004 г. с. 60.
- ^ Вагензей, Пол (9 августа 2018 г.). «Хакер находит скрытый« режим бога »на старых процессорах x86» . Оборудование Тома . Проверено 10 августа 2018 .
дальнейшее чтение
- Патент США 20030154359 , Henry, Glenn ; Родни Хукер и Терри Паркс, "Устройство и метод расширения набора команд микропроцессора", опубликовано 14 августа 2003 г., выпущено 20 февраля 2007 г., передано Centaur Technology
- Патент США 20030188130A1 , Henry, Glenn ; Родни Хукер и Терри Паркс, «Механизм увеличения количества регистров в микропроцессоре», опубликовано 02 октября 2003 г., опубликовано 13 мая 2008 г., назначено Centaur Technology.
- Домас, Кристофер (10 августа 2018 г.). Режим бога разблокирован: аппаратные бэкдоры в процессорах x86 (PDF) . DEF CON 26. Лас-Вегас.