Альтернативный Набор Команд

Материал из wikixw
Перейти к навигации Перейти к поиску

Альтернативный набор инструкций (AIS)-это вторая 32-разрядная архитектура набора инструкций, найденная в некоторых процессорах x86 производства VIA Technologies . На этих процессорах через C3 второй скрытый режим процессора доступен путем выполнения команды x86 ALTINST(0F 3F). Если режим AIS включен, процессор выполнит JMP EAX и начнет выполнять инструкции AIS по адресу регистра EAX . Использование AIS обеспечивает собственный доступ к разработанному по технологии Centaur ядру RISC внутри процессора

Формат инструкции[править]

Регистрация сопоставления между AIS и x86

Номер AIS x86 имя
R0 Те РЕГИСТР EAX
R1 ECX
R2 EDX
R3 EBX
R4 ИСП.
R5 НОП
R6 компания ESI
R7 EDI ЭЛЕКТРОННЫЙ ОБМЕН ДАННЫМИ
R8-R15 ...

Производитель описывает альтернативный набор команд как " расширенный набор целых чисел, MMX, с плавающей запятой и 3DNow! инструкции вместе с дополнительными регистрами и некоторыми более мощными формами инструкций".[1] Каждая инструкция AIS имеет префикс 3-байтовой последовательности0x8D8400, за которой следует 32-разрядная инструкция; эта форма префикса для инструкций AIS позволяет им выглядеть как x86 Load Effective Address ( LEA) инструкции. В 2018 году исследователь Кристофер Домас сообщил, что префикс 0x620405(x86 BOUND) также работал.

В 2005 году было частично отклонено предложение, сделанное в 2002 году, о добавлении поддержки АИС к ассемблеру Netwide Assembler (NASM) на том основании, что NASM является элементом x86, а АИС представляет собой отдельный набор инструкций.[3]

В 2007 году патент назвал некоторые инструкции микрокода как loadи storeК / из основной оперативной памяти, и loadPRAMИ storePRAMК/из частной-ОЗУ внутри процессора.[4] Команда проверки технологий Centaur, в документе 2014 года О VIA Nano, включила несколько коротких списков микроинструкций, включаяADDIG,JLINK,JMP_ALL,MVIG,NLOOPESTORE_PRAM, а также микрооперации XADDИ.XSUB Было показано, что микрооперации имеют формат, включающий поля opcode, exec unit, src width,src1,src2,dest widthdest, write flags?и end routine?.[5]

Доступность[править]

В режиме x86 доступность альтернативного набора команд можно определить, выполнив идентификатор CPUID с установленным регистром EAX 0xc0000001и затем изучив регистр EDX. Если бит EDX 0 установлен в 1, то AIS поддерживается. Если edX бит 1 также установлен в 1, то AIS включен. Если АИС поддерживается процессором, то его состояние можно проверить и изменить с помощью регистров для конкретных моделей , проверив и установив регистр управления функциями (FCR, register 0x1107). Если бит 0 ( "ALTINST" ) установлен в 1, то AIS включен.

Функция инициализации ядра Microsoft Windows NT KiGetFeatureBits()проактивно отключает альтернативный режим инструкции при загрузке. Если команда x86 ALTINSTjump выполняется при отключенном режиме AIS, то процессор создаст недопустимую инструкцию exeception. Установка бита с поддержкой AIS требует привилегированного доступа и должна быть установлена с помощью последовательности чтения-изменения-записи.

Повышение привилегий[править]

В 2018 году Кристофер Домас обнаружил , что некоторые процессоры Samuel 2 поставляются с альтернативным набором команд, включенным по умолчанию, и что путем выполнения инструкций AIS из пользовательского пространства можно получить эскалацию привилегий от кольца 3 до кольца 0. Domas частично реверсивно спроектировал набор инструкций AIS, используя автоматизированное фуззинг против кластера из семи тонких клиентов .[10] Domas использовал термины "глубоко внедренное ядро" (DEC) плюс "глубоко внедренный набор инструкций" (DEIS) для набора инструкций RISC, "инструкция запуска" для ALTINST, "инструкции моста "для префиксной оболочки x86," регистр глобальной конфигурации " для Регистра управления функциями (FCR) и документировал эскалацию привилегий с именем "Rosenbridge".

Дальнейшее чтение[править]

  • Патент США 20030154359, Henry, Glenn; Rodney Hooker & Terry Parks, "устройство и способ расширения набора команд микропроцессора", опубликованный 2003-08-14, выпущенный 2007-02-20, присвоенный технологии Centaur
  • Патент США 20030188130A1, Henry, Glenn; Rodney Hooker & Terry Parks, "механизм расширения числа регистров в микропроцессоре", опубликованный 2003-10-02, выпущенный 2008-05-13, присвоен технологии Centaur
  • Domas, Christopher (10 Августа 2018). Режим бога разблокирован: аппаратные бэкдоры в процессорах x86 (PDF). DEF CON 26. Лас-вегасская.