Содержание статьи
Все началось с того, что я приобрел себе ноут Dell Vostro 5301. И вот в один прекрасный день, гоняя по локалке очередной десяток гигабайт, я подумал, что, имея роутер с Wi-Fi 5 и ноут с его поддержкой, глупо его не использовать на всю катушку. Я включил на роутере Wi-Fi 5, попробовал, и мне понравилось.
Тренируемся на кошках
Но возникла одна проблема: остальные ноуты в моей сети не умели Wi-Fi 5, поэтому, посидев и подумав, я решил, что пришла пора апгрейда. Обновить предстояло два аппарата: огрызок ASUS X553MA, который трудится у меня файлопомойкой, и Lenovo G710, которым пользуется жена. Это как раз тот случай, когда из коробки нет драйверов, их пришлось тянуть с AUR, благо проводной адаптер на ноутбуке завелся.
Памятуя о проблемах с родной вайфайкой Lenovo G710, я решил выбрать заведомо беспроблемный адаптер Intel Wireless 7260, для которого в ядре Linux есть драйверы. Также я заранее учел, что в Lenovo G710 и ASUS X553MA разные разъемы PCI Express для подключения адаптеров и что со сменой адаптера в ASUS придется поменять еще и антенну. Смена антенны необходима из‑за разных разъемов на родном и новом адаптерах. Кроме того, в X553MA установлена лишь одна антенна main (экономия, однако), а новый адаптер предусматривает подключение двух антенн, основной и вспомогательной. Благо стоят они недорого и устанавливаются элементарно. Вот так это добро выглядит.
Пришло время все это дело установить и подключить. Первым на очереди был ASUS X553MA, и с ним, к моему удивлению, все прошло гладко: адаптер встал, заработал, и система его сразу же подхватила, пришлось только имя адаптера в юните wpa_supplicant
и dhcpcd
поменять.
Вайтлист и вендорлок
А вот с Lenovo G710 получилось гораздо веселее: там в биосе есть вендорлок. При начальной загрузке UEFI определяет установленный адаптер и ищет его в white list’е, зашитом производителем. Стоит ли говорить, что Intel Wireless 7260 там не оказалось и ноутбук встретил меня радостным сообщением.
В принципе, я к этому был готов еще на этапе планирования апгрейда, но успех с ASUS вселил в меня надежду, что замена адаптера может прокатить. Не прокатило…
Поиск в гугле показал, что проблема в целом известная и лечится перепрошивкой биоса пропатченной версией, которую можно поискать в интернете. К несчастью, биоса для моей модели не нашлось, остался последний вариант: ковырять UEFI самостоятельно.
В сети в целом есть ряд неплохих мануалов на тему обхода white list’а, например на Хабре (изображение экрана я взял оттуда, поскольку мое не сохранилось), и там нет ничего запредельно сложного. Надо распаковать UEFI, найти там участок с текстом ошибки, посмотреть, какая функция на него ссылается, и заменить один из условных переходов другим условным переходом — или безусловным переходом, тут есть некоторая вариативность. Смущали меня во всем этом две вещи: во‑первых, большинство мануалов заточены под виндовый софт, во‑вторых, с ассемблером я, мягко говоря, на вы.
Несколько углубившись в тему, я узнал про замечательную программу UEFITool и нашел пару примеров по работе с ней: часть 1 и часть 2. Это приблизило меня к решению проблемы, однако рекомендации во всех приведенных выше источниках носили скорее общий характер. И вот тут я наткнулся на отличную статью автора под ником p0358, описывающую в подробностях, как он ковырял UEFI своего Lenovo G510, решая ту же проблему, что и я.
После ее прочтения становится понятно, как найти заветное место, в котором нужно исправить jz
на jmp
, чтобы обойти white list. От себя могу добавить, что приседания автора с использованием двух версий UEFITool излишни, вполне можно обойтись и актуальной версией. Кроме того, в настоящее время бесплатная версия декомпилятора IDA Free умеет работать с UEFI-бинарниками, так что без IDA Pro тоже можно обойтись. Но главная фича этой статьи заключается в том, что автор обнаружил в коде UEFI Lenovo G510 переменные, которые отключают white list вовсе, и это очень упрощает все мероприятие.
Конечно, Lenovo G510 — это не G710, однако они ровесники и, считай, из одной линейки, поэтому я понадеялся, что их прошивки не должны заметно отличаться и пропатчить биос удастся малой кровью. Забегая вперед, скажу, что так все и получилось.
warning
Модификация UEFI ноутбука, как, впрочем, и ковыряние в его потрохах шаловливыми ручонками, легко могут окирпичить устройство. А при удачном стечении обстоятельств — физически вывести его из строя. Поэтому все нижеописанные манипуляции ты производишь на свой страх и риск. Правовой статус данных манипуляций тоже сомнительный.
От теории к практике
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»