Активируем отключенный VT-x

    Написал однажды мне друг с ноутбуком Samsung r60. Процессор в этом ноутбуке поддерживает аппаратную виртуализацию, но по умолчанию она отключена, и пункт включения в биосе отсутствует. Биос — Phoenix. Мы не будем патчить биос, мы будем патчить NVRAM!

    Нам понадобятся:
    • Samsung's FW Modules Extractor
    • Phoenix BIOS Editor
    • SYMCMOS — читалка/писалка cmos
    • NDISASM — дизассемблер x86 кода
    • Загрузочная флешка/дискета с DOS

    Ну что ж, приступим!
    Качаем прошивку с сайта Samsung. Прошивка идет одним .exe файлом вместе с прошивальщиком, нужно достать сам файл прошивки. Для этого воспользуемся Samsung's FW Modules Extractor



    Не все файлы распаковались, но это не важно.

    Открываем прошивку в Phoenix BIOS Editor, сворачиваем его и достаем файлы BIOSCOD*.ROM из папки TEMP Phoenix BIOS Editor'а. Он распаковал нашу прошивку. Копируем файлы в другую папку, закрываем Phoenix BIOS Editor.

    Начинается самое интересное. Дизассемблируем файлы из прошивки, в моем случае их было 7 (0-6):
    $ for i in {0..6}; do ndisasm -a -p intel -b 16 BIOSCOD0$i.ROM > BIOSCOD0$i.dasm; done

    Путем гугления выяснилось, что искать нужно команду mov ecx,0x3a:
    $ grep 'mov ecx,0x3a' *.dasm
    BIOSCOD04.dasm:0000BE99 66B93A000000 mov ecx,0x3a

    Отлично, команда найдена в файле BIOSCOD04.dasm!

    0000BE99 66B93A000000 mov ecx,0x3a
    0000BE9F 0F32 rdmsr
    0000BEA1 668BD8 mov ebx,eax
    0000BEA4 83E305 and bx,byte +0x5
    0000BEA7 B86F06 mov ax,0x66f
    0000BEAA 9A355400F0 call word 0xf000:0x5435
    0000BEAF C1E002 shl ax,0x2
    0000BEB2 40 inc ax
    0000BEB3 38D8 cmp al,bl
    0000BEB5 7432 jz 0xbee9

    Из кода видно, что в регистр ax записывается значение по адресу 0x66f, выполняются сравнения между al и bl, и если оба значения совпадают — прыгаем на адрес 0xbee9 — адрес отключения виртуализации.

    Пришло время SYMCMOS. Создаем загрузочную флешку/дискету, записываем программу на носитель, загружаемся и выполняем
    symcmos -v2 -lNVRAM.TXT
    Теперь у нас есть файл nvram.txt примерного содержания:
    ( SYMBOLIC CMOS EDITOR - Version 643710-035 )

    CRC = 350F
    (0015) [0000]
    (0018) [0001]
    (001B) [0001]
    (0021) [0000]
    (0024) [0001]
    (0027) [0001]
    (002A) [0000]
    (002D) [0001]
    (0030) [0000]
    (0036) [0000]
    (0039) [0000]
    (003F) [0001]
    (0042) [0000]
    ...
    (066F) [0000]
    (0672) [0000]
    (0675) [0000]
    (0678) [0002]
    (067B) [0000]
    (067E) [0000]
    (0681) [0002]

    Видно, что значение параметра, отвечающего за виртуализацию, установлено в 0. Изменим его прямо в этом файле:
    (066F) [0001]
    Опять загрузимся в DOS и выполним:
    symcmos -v2 -uNVRAM.TXT

    Перезагружаемся. Та-дам! Аппаратная виртуализация активирована!

    Интересные ссылки:
    http://tjworld.net/wiki/Sony/Vaio/FE41Z/HackingBiosNvram — программа для активации VT-x без прошивки CMOS для linux
    http://forum.notebookreview.com/acer/465936-acer-laptop-phoenix-bios-enable-virtualization-test-machine-acer-aspire-9420-a.html — С чего все начиналось
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 41

      +5
      Интересно, а чем Samsung мотивирует отключение этой фичи?
        0
        Наверняка тем же что Sony и Asus с Acer'ом :/
          +1
          А чем мотивируют Sony и Asus с Acer'ом?
            +3
            Боятся голубой пилюли, видимо.
              0
              [/sarcasm]
            0
            Незнаю чем может мотивировать асер, на моём таймлайне всё включено по умолчанию О_о
            0
            Как и другие. Иногда есть проблемы совместимости и стабильности.
              0
              А можно поподробнее? Проблемы совместимости и стабильности возникают именно на ноутбуках, или на десктопах тоже? Проблема в самой технологии виртуализации? Влияют ли эти проблемы при включенном VT-x на обычные приложения, VT-x не использующие? В чём выражается нестабильность?
              0
              Не знаю так ли в этом случае, но производители ноутбуков могут получать наборы логики и процессоры по совершенно разным ценам в зависимости от активированных возможностей. Интел не парится с переналадкой производства для обрезания возможностей, производители ноутбуков получают чипсет и процессор по очень вкусной цене, а пользователь с носом.
              +12
              Из кода видно, что в регистр ax записывается значение по адресу 0x66f
              Ну, вообще из кода видно, что в регистр просто записывается константа, никакого адреса тут нет. Эт я так, занудничаю :)
                +1
                sony тоже так балуется с vaio.
                вообще, за такие отключения vt-x и прочих плюшек процессоров, имхо, надо сразу расстреливать.
                  +5
                  sony уже давно выпустила для всех ноутбуков* прошивку bios, позволяющую включать VT-x.

                  * — возможно, только для всех ноутбуков, поддерживающих windows 7.
                  0
                  Вот бы и на ноутбуках с i5 (у меня samsung r580) можно было так активировать встроенное видео ядро(( А то аппаратно нет никаких отличий с ноутбуками с поддержкой nVidia Optimus, а на деле…
                    +1
                    Ну, тут аппаратные поддержка нужна — куда выводить-то?
                      0
                      До Вас я подозревал, что достаточно вставить этот процессор в материнскую плату с правильным чипсетом и по аппаратной части все.
                        +1
                        Это да, но выводить картинку, физически куда? RAMDAC всякие. Это должно быть на плате разведено.
                          0
                          У меня в HTPC установлен Core i3 с графикой, которая выводится на HDMI. Плата и чисет должны поддерживать.
                      –1
                      У меня acer на i3. Тоже очень хотел бы задействовать встроенную в камень графику.
                        0
                        Там не во все камни графика встроена. Сомневаюсь, что в ноут с видеокартой будут ставить еще и камень с графикой. Или они таки это делают?
                          0
                          Они таки это делают. Спецификации некоторых моделей (у меня i5-430M). Могу предположить, что как минимум мобильные версии процессоров — все со встроенной графикой.
                            0
                            Вы предлогаете выковыривать из процессоров графическое ядро?
                              0
                              Где же вы это прочитали? О_о
                        • UFO just landed and posted this here
                            +3
                            Инь? Что она тут делает?
                              +1
                              Смотрит на мой топик. Думаю, в скором времени можно и Лейн ждать.
                                –2
                                Лэйн смотрел… А Инь откуда?
                                  0
                                  Darker than black
                                    –3
                                    О, точно, надо досмотреть ^_^
                            0
                            В моём Lenovo SL500 после замены процессора пункт включения VT-x в БИОС появился самостоятельно.
                              0
                              Тут процессор поддерживал, а пункта не было.
                                0
                                А вот в Lenovo Y430 процессор поддерживает, а BIOS нет…
                                  0
                                  Та же фигня. У Леново на оф. форуме народ повозмущался-повозмущался и затих.
                                    0
                                    Можно попробовать активировать. Какой биос? Наверняка insyde? Под него уже скрипт на питоне есть.
                                      0
                                      А какова вероятность неудачи и что может случиться при самом плохом исходе? =)
                                      Просто мне без ноута оставаться никак нельзя.
                                        0
                                        Ну, вероятность неудачи всегда есть. Самый плохой исход — кирпич. Иногда встраивают специальные методы восстановления биоса, вроде специальной болванки или флешки.
                                          0
                                          Тогда я наверное пока не рискну ;) это основной рабочий ноут.
                                0
                                Неплохо было бы в начале статьи написать что такое VT-x. Спасибо
                                  0
                                  Процессор в этом ноутбуке поддерживает аппаратную виртуализацию
                                  Здесь написано. Это вроде как распространенное сокращение.
                                  0
                                  Помогите найти решение, не знаком с ассемблером x86.
                                  Попробовал по аналогии включить виртуализацию в стареньком Packard Bell EasyNote BG48. После распаковки биоса утилитой MMTool_v3.12.exe:

                                  • ID модуля: 1B;
                                  • Single Link Arch BIOS;
                                  • ROM Location: 0002CBD0;
                                  • Run Location: Dynamic


                                  Первое место, прямо сначала, 0x0001260E:

                                  0001260D C3 ret
                                  0001260E 66B93A000000 mov ecx,0x3a
                                  00012614 0F32 rdmsr
                                  00012616 A801 test al,0x1
                                  00012618 752F jnz 0x2649
                                  0001261A 6633C0 xor eax,eax
                                  0001261D 6633D2 xor edx,edx
                                  00012620 9A174E00F0 call 0xf000:0x4e17
                                  00012625 7402 jz 0x2629
                                  00012627 0C08 or al,0x8
                                  00012629 24F9 and al,0xf9
                                  0001262B 50 push ax
                                  0001262C B8C414 mov ax,0x14c4
                                  0001262F 9A887600F0 call 0xf000:0x7688
                                  00012634 58 pop ax
                                  00012635 740E jz 0x2645
                                  00012637 26F6063F3D01 test byte [es:0x3d3f],0x1
                                  0001263D 7406 jz 0x2645
                                  0001263F A802 test al,0x2
                                  00012641 7502 jnz 0x2645
                                  00012643 0C04 or al,0x4
                                  00012645 0C01 or al,0x1
                                  00012647 0F30 wrmsr
                                  00012649 C3 ret


                                  Второе место 0x00038AF3:

                                  00038AD1 C3 ret
                                  00038AD2 7505 jnz 0x8ad9
                                  00038AD4 EAA916E551 jmp 0x51e5:0x16a9
                                  00038AD9 1E push ds
                                  00038ADA 56 push si
                                  00038ADB 6800F0 push word 0xf000
                                  00038ADE 1F pop ds
                                  00038ADF F6063F3D01 test byte [0x3d3f],0x1
                                  00038AE4 74D0 jz 0x8ab6
                                  00038AE6 E813C3 call 0x4dfc
                                  00038AE9 B8C414 mov ax,0x14c4
                                  00038AEC 9A99330040 call 0x4000:0x3399
                                  00038AF1 8BF8 mov di,ax
                                  00038AF3 66B93A000000 mov ecx,0x3a
                                  00038AF9 0F32 rdmsr
                                  00038AFB A801 test al,0x1
                                  00038AFD 74AB jz 0x8aaa
                                  00038AFF 33C9 xor cx,cx
                                  00038B01 A806 test al,0x6
                                  00038B03 7401 jz 0x8b06
                                  00038B05 41 inc cx
                                  00038B06 33C0 xor ax,ax
                                  00038B08 3BCF cmp cx,di
                                  00038B0A 7401 jz 0x8b0d
                                  00038B0C 40 inc ax
                                  00038B0D 9A3D8300F0 call 0xf000:0x833d
                                  00038B12 7396 jnc 0x8aaa
                                  00038B14 8BD9 mov bx,cx
                                  00038B16 B8C414 mov ax,0x14c4
                                  00038B19 9AA8330040 call 0x4000:0x33a8
                                  00038B1E B403 mov ah,0x3
                                  00038B20 EB8A jmp short 0x8aac
                                  00038B22 B8E153 mov ax,0x53e1
                                  00038B25 EB3B jmp short 0x8b62
                                  00038B27 B8053F mov ax,0x3f05
                                  00038B2A 8BD8 mov bx,ax
                                  00038B2C 8AC7 mov al,bh
                                  00038B2E C0E804 shr al,byte 0x4
                                  00038B31 E82100 call 0x8b55
                                  00038B34 8AC7 mov al,bh
                                  00038B36 E81C00 call 0x8b55
                                  00038B39 6726C6072E mov byte [es:edi],0x2e
                                  00038B3E 6647 inc edi
                                  00038B40 8AC3 mov al,bl
                                  00038B42 C0E804 shr al,byte 0x4
                                  00038B45 E80D00 call 0x8b55
                                  00038B48 8AC3 mov al,bl
                                  00038B4A E80800 call 0x8b55
                                  00038B4D 6726C60700 mov byte [es:edi],0x0
                                  00038B52 6647 inc edi
                                  00038B54 C3 ret


                                  Спасибо!
                                    0
                                    Вы уверены, что процессор в вашем ноутбуке поддерживает виртуализацию?
                                    Возможно, посмотрю, если скинете файл BIOS, но не обещаю. Также предоставьте содержание регистра MSR 0x3a. Не знаю, как это делается в Windows, в Linux:
                                    rdmsr 0x3a
                                    (rdmsr из состава msr-tools).

                                    Судя по всему, вам нужно редактировать cmos 0x14c4.
                                      0
                                      Nikolay_Po, получилось ли у вас активация?

                                  Only users with full accounts can post comments. Log in, please.