Категория > Новости > Запретный апгрейд. Взламываем UEFI ноутбука Lenovo, чтобы поменять адаптер Wi-Fi - «Новости»

Запретный апгрейд. Взламываем UEFI ноутбука Lenovo, чтобы поменять адаптер Wi-Fi - «Новости»


15-04-2023, 00:00. Автор: Всеволод
AUR, бла­го про­вод­ной адап­тер на ноут­буке завел­ся.

Па­мятуя о проб­лемах с род­ной вай­файкой Lenovo G710, я решил выб­рать заведо­мо бес­проб­лемный адап­тер Intel Wireless 7260, для которо­го в ядре Linux есть драй­вера. Так­же я заранее учел, что в Lenovo G710 и ASUS X553MA раз­ные разъ­емы PCI Express для под­клю­чения адап­теров и что со сме­ной адап­тера в Asus при­дет­ся поменять еще и антенну. Сме­на антенны необ­ходима из‑за раз­ных разъ­емов на род­ном и новом адап­терах. Кро­ме того, в X553MA уста­нов­лена лишь одна антенна main (эко­номия, одна­ко), а новый адап­тер пре­дус­матри­вает под­клю­чение двух антенн, основной и вспо­мога­тель­ной. Бла­го сто­ят они недоро­го и уста­нав­лива­ются эле­мен­тарно. Вот так это доб­ро выг­лядит.


Запретный апгрейд. Взламываем UEFI ноутбука Lenovo, чтобы поменять адаптер Wi-Fi - «Новости»
Адап­тер Wi-Fi для Lenovo G710
Адап­тер Wi-Fi для ASUS X553MA
Но­вая антенна для ASUS X553MA

Приш­ло вре­мя все это дело уста­новить и под­клю­чить. Пер­вым на оче­реди был ASUS X553MA, и с ним, к моему удив­лению, все прош­ло глад­ко: адап­тер встал, зарабо­тал, и сис­тема его сра­зу же под­хва­тила, приш­лось толь­ко имя адап­тера в юни­те wpa_supplicant и dhcpcd поменять.


 

Вайтлист и вендорлок


А вот с Lenovo G710 получи­лось гораз­до веселее: там в биосе есть вен­дорлок. При началь­ной заг­рузке UEFI опре­деля­ет уста­нов­ленный адап­тер и ищет его в white list, зашитом про­изво­дите­лем. Сто­ит ли говорить, что Intel Wireless 7260 там не ока­залось и ноут­бук встре­тил меня радос­тным сооб­щени­ем.


Error

В прин­ципе, я к это­му был готов еще на эта­пе пла­ниро­вания апгрей­да, но успех с ASUS все­лил в меня надеж­ду, что замена адап­тера может про­катить. Не про­кати­ло…


По­иск в гуг­ле показал, что проб­лема в целом извес­тная и лечит­ся переп­рошив­кой биоса про­пат­ченой вер­сией, которую мож­но поис­кать в интерне­те. К нес­частью, биоса для моей модели не наш­лось, остался пос­ледний вари­ант: ковырять UEFI самос­тоятель­но.


В сети в целом есть ряд неп­лохих ману­алов на тему обхо­да while 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 ноут­бука, как, впро­чем, и ковыря­ние в его пот­рохах шалов­ливыми ручон­ками, лег­ко могут окир­пичить устрой­ство. А при удач­ном сте­чении обсто­ятель­ств — физичес­ки вывес­ти его из строя. Поэто­му все ниже­опи­сан­ные манипу­ляции ты про­изво­дишь на свой страх и риск. Пра­вовой ста­тус дан­ных манипу­ляций тоже сом­нитель­ный.



 

От теории к практике



Перейти обратно к новости