На днях сделал из odorid-c1 и flashrom программатор spi.
Вспомнился этот нетбук, который когда-то тоже пытался отучить wifi карточки проверять, кончилось тож плачевно.
Сразу слил дамп с текущего биоса, после чего начал эксперименты.
Для распаковки воспользовался phoenixtool259
Проверка белого списка в том же модуле BIOSCOD02.ROM, где и сам список.
Чтобы правильно считать смещения, нужно от файла отрезать первые 27 байт заголовка. То-есть надо искать ссылку на 0x238F (учитываем обратный порядок байт и ищем 8F 23).
Такая последовательность находится один раз по смещению 0x162.
Дизассемблируем окрестности этого смещения, скажем в IDA, и видим функцию проверки whitelist, начинающуюся с 0x160 и заканчивающуюся 0x1AD
Видно что в случае удачной проверки снимается флаг командой clc, а в случае ошибки поднимается командой stc.
Патч решил сделать просто заменив команду stc на clc, то есть по адресу 0x16a меняем F9 на F8
Подложить обратно измененный модуль получилось выставив в Advanced настройках PhoenixTooll флаги Allow user to modify other modules и No SLIC.
Во вложении оригинальный прошивальщик с подмененным биосом версии 20CN23WW
А также 20CN28WW, но он собран на основе дампа с матплаты, так как lenovo почему то не выложила эту версию, но прошивала на платы. За этот вариант не могу ручаться, что не сменит, скажем, мак сетевухи или еще чего.
На днях сделал из odorid-c1 и flashrom программатор spi.
Вспомнился этот нетбук, который когда-то тоже пытался отучить wifi карточки проверять, кончилось тож плачевно.
Сразу слил дамп с текущего биоса, после чего начал эксперименты.
Для распаковки воспользовался phoenixtool259
Проверка белого списка в том же модуле BIOSCOD02.ROM, где и сам список.
Чтобы правильно считать смещения, нужно от файла отрезать первые 27 байт заголовка. То-есть надо искать ссылку на 0x238F (учитываем обратный порядок байт и ищем 8F 23).
Такая последовательность находится один раз по смещению 0x162.
Дизассемблируем окрестности этого смещения, скажем в IDA, и видим функцию проверки whitelist, начинающуюся с 0x160 и заканчивающуюся 0x1AD
Видно что в случае удачной проверки снимается флаг командой clc, а в случае ошибки поднимается командой stc.
Патч решил сделать просто заменив команду stc на clc, то есть по адресу 0x16a меняем F9 на F8
Подложить обратно измененный модуль получилось выставив в Advanced настройках PhoenixTooll флаги Allow user to modify other modules и No SLIC.
Во вложении оригинальный прошивальщик с подмененным биосом версии 20CN23WW
А также 20CN28WW, но он собран на основе дампа с матплаты, так как lenovo почему то не выложила эту версию, но прошивала на платы. За этот вариант не могу ручаться, что не сменит, скажем, мак сетевухи или еще чего.