SIEĆ KOMPUTEROWA ŻUPANET

Witamy na stronie sieci komputerowej ŻupaNET!
Strona główna | FTP | Przeglądarki Internetowe | WSUS XP/2000 | Windows Update Vista/7 | Blog/Wiedza | Archiwum

Wiedza - Modyfikacja BIOS

J.F.

Powrót do listy artykułów

Niedawno dostałem do naprawy komputery z dziwnym problemem - w żaden sposób nie dało się uruchomić na nich najnowszej wersji systemu Windows 10.

Historia

Komputer miał procesor AMD Athlon X4 845 (seria AMD Carrizo) osadzony na płycie głównej GIGABYTE GA-F2A68HM-HD2 (rev. 1.1).

Zainstalowany był na nich Windows 10 w wersji bodajże 1803. Próba aktualizacji kończyła się restartem, po którym system ładował się jak gdyby nigdy żadnej aktualizacji nie było.

Próba instalacji "na czysto" z dysku USB również nie przynosiła żadnych rezultatów - komputer albo zawieszał się na logo Windows, wyświetlając po jakimś czasie korupcję ekranu, albo pokazywał logo Windows i po jakimś czasie się restartował.

Jako, że miałem do dyspozycji kilka podobnych komputerów, i na wszystkich występował ten sam problem, postawiłem przyjrzeć się tej sprawie bliżej.

Znalazłem następujący temat:
https://forum.level1techs.com/t/msi-a68hi-ac-athlon-x4-845-will-not-boot-windows-10/175271/12

Autor wpisu wskazywał na aktualizację pliku mcupdate_AuthenticAMD.dll , która związana była z podatnościami Meltodwn i Sprectre (w przypadku AMD - tylko Spectre), i która miała aktualizować tak zwane mikrokody, aby zapobiec podatnościom. Niestety, w przypadku procesorów o nazwie kodowej AMD Carrizo, Microsoft wypuścił widocznie uszkodzone poprawki.

Rozwiązaniem według forumowiczów było skasowanie tego pliku - jednak Windows z pewnością zorientowałby się o tym fakcie i próbował go wgrać ponownie, co poskutkowałoby "ucegleniem" instalacji.

Postanowiliśmy zatem uderzyć w problem z innej strony.

Po konsultacji, okazało się, że Windows nie ładuje swoich plików .dll z poprawkami, o ile stosowne poprawki są już w BIOSie komputera.

Tak się składa, że dostałem również bliźniaczy komputer (w którym problem również występował), ale z inną płytą główną - MSI A68HM-E33-V2. Po sprawdzeniu strony producenta, znalazłem "podejrzanie nowy" BIOS z 2018 roku (roku, w którym odkryto wyżej wymienione podatności), mimo iż płyta była z 2016 roku, i poprzednia wersja BIOSu była starsza o dwa lata.

Po instalacji BIOSu moje przypuszczenia się potwierdziły - w tej wersji najwidoczniej dodano odpowiednie mikrokody i system instalował się bez problemu!

Pozostało zatem zaktualizować BIOS płyty GIGABYTE. A NIE! Okazało się, że w przeciwieństwie do MSI, GIGABYTE nie był zainteresowany wsparciem swojego nieco już starego produktu i aktualizacja z mikrokodami nigdy się nie ukazała!

Na tym poziomie mogłem albo wrócić do szarpania się z plikami systemowymi Windows, albo. zrobić swój, zmodyfikowany BIOS.

W związku z tym, że pierwsza opcja byłaby dosyć uciążliwa, postanowiłem spróbować tej drugiej.

Modyfikacja okazała się banalnie prosta, jednak tylko dlatego że w płycie GIGABYTE jak i MSI zastosowano AMI BIOS - najbardziej podatny na modyfikacje.

Temat mikrokodów był już znany na forach internetowych, głównie za sprawą tego, że paradoksalnie większość osób chciało usunąć poprawki ze swoich BIOSów, ponieważ mają one marginalny wpływ na wydajność - to jednak historia na inny wpis.

Rozwiązanie - Co i jak?

Do modyfikacji BIOSu potrzebujemy:

  1. Środowiska Python 3 z pakietami colorama oraz pltable (w przypadku mojego komputera z Windows 7, miałem problem z instalacją Pythona; po pobraniu starszej wersji nie działał system pobierania pakietów z Internetu, jednak pomocne okazało się repozytorium GitHub z instalatorami Python 3 działającymi z systemem Windows 7 - problem z nowszymi wersjami zdaje się leżeć w instalatorze, nie zaś w środowisku.)
  2. Oryginalnego pliku BIOS w formacie binarnym, najlepiej najnowszego - do pobrania ze strony producenta
  3. Narzędzia UBU do pobrania z dysku MEGA (temat z forum, w którym narzędzie jest opisane: https://winraid.level1techs.com/t/tool-guide-news-uefi-bios-updater-ubu/30357
  4. Narzędzia AMI MMT (dostępnego na dysku powyżej)
Po pobraniu powyższych narzędzi i ich ewentualnej instalacji możemy przystąpić do modyfikacji.

Po pierwsze należy wypakować plik ZIP MMTool, a następnie wybrać odpowiednią wersję (ja użyłem 5.0.0.7), a następnie zmienić nazwę pliku EXE na MMTool_a4.exe i wkleić do katalogu UBU.

Następnie należy wkleić nasz BIOS do katalogu UBU.

Teraz należy uruchomić program otwierając UBU.cmd.

Powinny wyświetlić się informacje o załadowanym obrazie BIOS.

Jako pierwsze wybieramy narzędzie do modyfikacji BIOSu - należy wybrać UEFIReplace - opcja 0.

Zrzut ekranu UBU Tool

Następnie możemy wybrać, co chcemy zmodyfikować. Nas interesują mikrokody - opcja 5.

Zrzut ekranu UBU Tool

Zostaną nam wyświetlone mikrokody znalezione w obrazie BIOS komputera. Program posiada własną bazę mikrokodów, jeśli wykryje, że posiada w bazie nowsze mikrokody, poinformuje o tym w tabelce.

Możemy dzięki temu pójść na skróty i wybrać opcję F, za pomocą której program zaktualizuje wszystkie mikrokody w BIOSie.

Zrzut ekranu UBU Tool

Program poinformuje nas o wprowadzonych zmianach.

Zrzut ekranu UBU Tool

Następnie wyświetlony zostanie aktualny stan obrazu BIOS. Zmiany zostały wprowadzone - można wyjść z aplikacji wybierając 0.

Zrzut ekranu UBU Tool

Ponownie potwierdzamy chęć wyjścia wybierając 0.

Zrzut ekranu UBU Tool

Na końcu program zapyta pod jaką nazwą ma zostać zapisany plik BIOS - tu możemy wybrać jak chcemy.

Zrzut ekranu UBU Tool

Teraz w folderze aplikacji został zapisany BIOS pod uprzednio wybraną przez nas nazwą. Na tym etapie można już go nagrać na dysk USB i spróbować wgrać do płyty głównej. Pragnę oczywiście zaznaczyć, że nie odpowiadam za ewentualne uszkodzenia. :)

Po wgraniu BIOSu powinniśmy dokładnie przetestować stabilność komputera, na przykład narzędziem Pime95. Może się zdarzyć, że naszymi poprawkami dodaliśmy również jakieś nowe bugi.

Modyfikacja wyświetlanej wersji

Akurat jako, że naprawiane przeze mnie komputery nie są moją własnością, i nie wiadomo jaki będzie ich dalszy los, aby zaznaczyć, że mają one zmodyfikowane oprogramowanie, postanowiłem zmienić wyświetlaną wersję BIOS z FC na FZ, aby ją wyróżnić.

Myślę, że w każdej płycie proces ten może wyglądać nieco inaczej, jednak postaram się tu opisać sposób, który zadziałał na płycie GIGABYTE.

Do modyfikacji można użyć narzędzia UEFITool obecnego w katalogu UBU. Z tego co pamiętam, są w nim trzy wersje i w jednej nie ma możliwości wprowadzania zmian. Po otwarciu UEFITool należy załadować plik BIOSu, w przypadku GIGABYTE nalży w okienku wyboru pliku wybrać opcję Wszystkie pliki aby móc wybrać plik z końcówką .FC

Główny problem polegał na tym, że informacje o wersji BIOS są zaszyte w różnych obszarach, w różny sposób. Najłatwiej było mi je odszukać po dacie, którą producent zapisał przy wersji. W tym celu używałem wyszukiwarki w programie. Proszę zwrócić uwagę na odznaczoną opcję Unicode.

Zrzut ekranu UEFI Tool

Jeśli program znajdzie jakieś wyniki pasujące do wyszukiwania, zostaną one wyświetlone w okienku na dole. Należy w taki wynik dwukrotnie kliknąć - zostaniemy przeniesieni do miejsca, gdzie znaleziono dany ciąg. Potem należy wyeksportować ten obszar pamięci za pomocą polecenia Extract Body.

Zrzut ekranu UEFI Tool

Zapisujemy zmieniony obszar, na przykład pod nazwą zmiana1.bin.

Teraz należy otworzyć plik za pomocą dowolnego edytora HEX, na przykład HxD.

Zrzut ekranu HxD

Teraz musimy znaleźć wszystkie wystąpienia numeru wersji i daty oraz ostrożnie je zmodyfikować.

UWAGA! W ŻADNYM WYPADKU NIE MOŻNA ZMIENIAĆ ROZMIARU PLIKU ANI PRZRESUWAĆ ZNAJDUJĄCYCH SIĘ W NIM DANYCH PRZEZ UŻYCIE KLAWISZA DELETE LUB DODAWANIE WIĘKSZEJ ILOŚCI ZNAKÓW NIŻ BYŁO ORYGINALNIE - SPOWODUJE TO USZKODZENIE BIOSu!!!

Zrzut ekranu HxD

Po modyfikacji zapisujemy plik, a w UEFITool wybieramy obszar pamięci i opcję Replace body, w oknie wyboru pliku wybieramy uprzednio zmodyfikowany plik.

Zrzut ekranu UEFI Tool

Przy obszarze powinna pokazać się informacja o wykonanej zamianie.

Zrzut ekranu UEFI Tool

Postępujemy tak dla następnych wyników wyszukiwania. NALEŻY JEDNAK ZACHOWAĆ OSTROŻNOŚĆ! Może się zdarzyć że jakimś cudem dany ciąg nie jest związany z wersją BIOSu, a jedynie przypadkowo zawiera dany ciąg znaków!

W moim przypadku powyższe działania nie przyniosły rezultatu - okazuje się że wersja BIOS może być zakodowana również inaczej. :)

Następnie zalecam wyszukanie i podmianę wszystkich wystąpień wersji BIOSu zakodowanych w UNICODE, proces jest identyczny do wcześniejszego, jednak trzeba zwrócić uwagę na podmianę znaków w edytorze HEX.

Zrzut ekranu UEFI Tool
Zrzut ekranu HxD

Okazuje się jednak że to nie koniec!

Wersja BIOS została jeszcze zakodowana gdzieniegdzie za pomocą Little Endian. Po krótce wyjaśnię, że jeśli rok 2015 to heksadecymalnie 07 DF, to bity zostały zapisane od tyłu: DF 07. Dlatego, jeśli szukamy wersji BIOSu zakodowanej "od tyłu", to dla 24.12.2015 - 18 0C 07 DF musimy szukać DF 07 0C 18. Skorzystamy zatem z wyszukiwarki HEX.

Zrzut ekranu UEFI Tool

UWAGA! Tutaj szukamy już dosyć krótkiego ciągu danych w HEX, w związku z czym trafienie "niewinnego" pliku, który nie jest związany z informacjami o wersji BIOS jest dużo bardziej prawdopodobne! Powinniśmy zmieniać dane tylko w tych plikach, w których ewidentnie widać, że zakodowane są informacje o obrazie BIOS, na przykład kiedy datę otaczają informacje o modelu płyty i rewizji BIOS. Należy pamiętać, że data może być zakodowana jako data komplikacji narzędzi wchodzących w skład BIOSu, a jej zmiana może je uszkodzić!

Zrzut ekranu HxD
Zrzut ekranu HxD

Po zakończeniu zmian można od nowa wybudować obraz.

Zrzut ekranu UEFI Tool

Po wybudowaniu możemy spróbować wgrać nasz obraz. Jeśli w którymś miejscu widnieje stara wersja - jakiś ciąg został pominięty. Pamiętajmy również o wcześniej wspomnianym przetestowaniu stabilności komputera!

Pliki użyte w poradniku

Na wypadek zniknięcia jakiegoś z podanych w poradniku hostingów, zamieszczam komplet plików użytych w poradniku:


© Grupa ŻupaNET 2025 r.

Valid HTML 4.01 Transitional