Я делал пару раз руководствуясь этой статьей
https://geektimes.ru/post/256732/Написать этот топик меня подтолкнул свой тернистый опыт установки wifi платы 802.11n, которая отсутствовала в whitelist BIOS в моём ноутбуке. Мотивацию и уверенность придал пост
http://habrahabr.ru/blogs/DIY/108820Устанавливаем не поддерживаемую Wifi карту в HP Pavilion dv6-1319er
Когда первый раз поставил другую wifi плату и увидел это сообщение:
Код:
104-Unsupported wireless network device detected.
System halted. Remove device and restart.
первая мысль была о том что это какая-то аппаратная не совместимость устройств и что вопрос замены платы полностью безнадёжен. Но поиск в гугле дал понять что не всё ещё потеряно. Вариантов решения интернеты предлагали не много:
1. Прошить BIOS с правильным патчем, который отключает полностью whitelist или добавляет\заменяет в whitelist VEN, DEV, SUBSYS на необходимую плату.
2.
http://www.winmatrix.com/forums/index.p ... fi-workingПерепрошить саму wifi плату чтоб заменить в ней VEN, DEV, SUBSYS на те которые есть в whitelist, по которым и проверяется возможность установки той или иной платы.
Процесс добывания wifi-n платы был грязен и криминален, потому описывать его я не буду, спасибо
Dr.Marteens за содействие. Родная плата в ноутбуке стояла Intel WM3945ABG. На замену ей была добыта Intel Wifi Link 5100 AGN. Действовать начал по шагам описанным в посте выше.
Когда я только начал заниматься этим вопросом 3 месяца назад, поиски в интернет дали понять что перепрошить wifi-карту от intel не представляется возможным, а готового пропатченого БИОС-а как-то совсем не находилось… возможно плохо искал.
Распаковка биоса с помощью Phoenix Tool не удалась. Биос был собран на какой-то более старой основе.
![Изображение](https://habrastorage.org/storage/habraeffect/92/37/9237c709d731f1304b0fd2c8ff48f437.jpg)
Программированием биосов я никогда не занимался, да и с ассемблером я на ВЫ. Поиск утилиты для распаковки биоса Compaq не дал никаких результатов, и было решено ковырять биос по живому, с помощью WinHEX. Прошивка представляет из себя флешер HPQFlash.exe и CAB-архив с файлами прошивки.
![Изображение](https://habrastorage.org/storage/habraeffect/72/87/728739f509ed4d84764dea2f2330dd36.jpg)
![Изображение](https://habrastorage.org/storage/habraeffect/a8/44/a8443efbc2d04e3fd9c79db1388fff59.jpg)
У родной wifi платы ИД оборудования был такой
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C
значения в прошивке хранятся в обратном порядке:
VEN_8086 -> 8680
DEV_4222 -> 2242
SUBSYS_135C103C -> 3C105C13
Поиск по двум первым значениям дал очень много результатов, а по 3C105C13 ни одного, были подозрения и мысли что прошивка ROM.bin ещё как-то запакована или зашифрована. Очередной мозговой штурм, гугление, и в течении нескольких часов была составлена карта адресов с искомыми значениями и место нахождения whitelist в прошивке локализовано. Дабы не использовать много места, программисты биоса решили сэкономить пару байт и полностью записали SUBSYS только для 3C105B13, а остальные значения судя по всему подставляли алгоритмом.
![Изображение](https://habrastorage.org/storage/habraeffect/80/62/8062e1d7755e827b07c1eb66238529a4.gif)
где зеленым выделены
Intel платы, синим
Broadcom. Отдельными значениями идут модификации плат 5C, 5D, 5E, 5F. И аналогично записан Broadcom.
открываем INF-файл драйверов Intel и находим те же VEN, DEV, SUBSYS
Код:
; HP_3945_ABG
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW1 , PCI\VEN_8086&DEV_4222&SUBSYS_135B103C ; MOW1
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW2 , PCI\VEN_8086&DEV_4222&SUBSYS_135C103C ; MOW2
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_RoW , PCI\VEN_8086&DEV_4222&SUBSYS_135D103C ; RoW
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_JPN , PCI\VEN_8086&DEV_4222&SUBSYS_135E103C ; JPN
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_KRA , PCI\VEN_8086&DEV_4222&SUBSYS_135F103C ; KRA
И кажется что уже всё совсем просто, заменяем одни значения на другие, всё сохраняем и перепрошиваем BIOS. Однако модификаций Intel 3945 всего 5 разных, а модификаций Intel 5100, судя по INF-файлу драйверов аж 8. Хотя по идее достаточно прописать ИД только одной платы. Естественно чтоб узнать VEN, DEV, SUBSYS, её надо вставить в другой ноутбук, в котором нет whitelist. Эту затею я решил отложить, и проверить один важный момент: а проверяет ли флешер CRC прошивки? Ведь утилита Phoenix Tool сама всё собирает обратно и пересчитывает\перезаписывает CRC, а в моём случае это пришлось бы делать руками.
Изменив пару байт в ROM.bin, появился ещё один вопрос: а как всё это собрать обратно в CAB-архив? Ведь стандартный набор архиваторов работает только со своими форматами и плюс 3 — 4 сторонних, а CAB-формат был разработан в Microsoft, и никем особо не поддерживается для запаковки. Через некоторое время была найдена программа 2007 года Cab Maker 2.0.0.120, с помощью которой я собрал первый изменённый БИОС архив.
![Изображение](https://habrastorage.org/storage/habraeffect/2c/f1/2cf109d3cd313937708b73764fe75589.jpg)
Где хранится контрольная сумма БИОС-а, я не знал, никакой информации о структуре прошивки найти не удалось.
Подозрения падали на файл ROM.sig, однако проверить это было нечем. Попытки найти хешь файла хешированием ROM.bin разными алгоритмами (CRC32, MD5, SHA1 — SHA512 и ещё несколькими), как в нём самом так и ROM.sig ничем не увенчались, что не удивительно.
Идея как действовать дальше родилась мгновенно. Если флешер проверят CRC, значит он его где-то берёт или высчитывает, и сравнивает с другим значением. Значит надо дизассамблировать HPQFlash.exe и в режиме Debug по шагам найти алгоритм или то место где проходит эта проверка контрольной суммы. Ещё была идея в флешере отключить проверку CRC, однако это было чревато убитым железом вообще, в случае если БИОС проверяет свой CRC при запуске ноутбука.
Был и
http://forum.biosflash.com/viewtopic.php?f=1&t=1318 как поступили немцы на одном сайте. Они также не нашли где хранится контрольная сумма, но где-то узнали или подобрали алгоритм её подсчёта, и решили в оставшиеся байты где хранится информация о Broadcom-овской плате подсунуть правильно подсчитанные значения, чтоб CRC файла Rom.bin в итоге не изменился. И судя по всему у них это получилось.
Как я уже писал выше, с ASM у меня всё очень плохо и максимум до чего я смог докопаться — это в дизассаемблере IDA Pro Advanced, в режиме отладки найти место где проходит цикл проверки контрольной суммы, но значений CRC найти не смог. Тут я обратился за помощью к другу, который долгое время писал на ASM, чтоб найти таки контрольную сумму. Однако до этого дело не дошло. Очередной штурм гугла дал ссылку на
http://forums.mydigitallife.info/printt ... p;page=129 где пользователи просят пропатчить биос их ноутов. Дальнейшие изыскания я решил прекратить, ибо биться как муха в стекло, когда рядом открытая форточка посчитал не целесообразным.
http://forums.mydigitallife.info/thread ... post111460 (Cписок уже пропатченных БИОСов для HP с отключенным whitelist)