Обход искусственной привязки аккумуляторов в ноутбуках Lenovo

Мэтью Чепмен (Matthew Chapman), основатель проекта rdesktop, был поставлен в тупик, столкнувшись с искусственными ограничениями по использованию неоригинальных аккумуляторов в ноутбуках Lenovo. Собираясь в поездку Мэтью купил новый аккумулятор для своего ноутбука ThinkPad X230T, который уже не мог работать в автономном режиме более 10 минут. Аккумулятор подошёл, но при загрузке было выведено предупреждение, что он не является оригинальной комплектующей и поэтому могут возникнуть проблемы с его зарядкой. На деле аккумулятор действительно не заряжался и это ограничение было активировано искусственно на уровне контроллера, чтобы стимулировать покупку оригинальных деталей от компании Lenovo. Проблема была в том, что для данного ноутбука выпуск оригинальных аккумуляторов уже прекращён.

Мэтью оказался достаточно настойчив чтобы детально разобрать (часть 1, часть 2, часть 3) всю цепочку организации блокировки, обойти все подводные камни и опубликовать отчёт о снятии блокировки. В частности, путём обратного инжиниринга был определён метод аутентификации аккумулятора, который оказался реализован через привязку к контроллеру, установленному в аккумулятор. Так как модифицировать прошивку встроенного в аккумулятор контроллера для эмуляции оригинальной запчасти было затруднительно, Мэтью решил отключить проверку внеся изменения в прошивку присутствующего на ноутбуке контроллера управления зарядом. Прошивка для данного контроллера поставляется в составе общего образа BIOS, поэтому для модификации можно использовать штатные способы обновления BIOS. Во время работы возникло достаточно много подводных камней, например, пришлось решать проблемы с шифрованием модифицированной прошивки и расчётом контрольных сумм для её верификации.

Полный текст статьи читайте на OpenNet