解鎖聯(lián)想 BIOS 高級(jí)設(shè)置里的隱藏超頻設(shè)置
上一篇文章提過(guò)的工具在這一篇不再贅述。
感謝國(guó)外 Win-raid 論壇大神 Lost_N_BIOS 給出的方法,筆者得以在此演示。原帖:https://www.win-raid.com/t5419f16-Suppressed-menu-entries-in-BIOS-setup.html。?
聲明:修改 BIOS 有損壞計(jì)算機(jī)系統(tǒng)并丟失保修的風(fēng)險(xiǎn),因模仿本文操作導(dǎo)致的任何后果,本人不承擔(dān)任何責(zé)任!?
上一篇文章我們較為詳細(xì)地介紹了如何把默認(rèn)隱藏的 Advanced 菜單給“揪出來(lái)”。但是如果和平常所見(jiàn)的高級(jí)設(shè)置相比,我們可以發(fā)現(xiàn)“Overclocking Performance”目錄(即超頻選項(xiàng))依然不可見(jiàn)。即使對(duì)于 i5-1135G7 和 i7-1165G7 這樣的低壓 CPU 而言超頻并沒(méi)有意義(intel 鎖死了基頻和倍頻超頻),但諸如降壓這樣的設(shè)置卻都在這個(gè)菜單里。對(duì)于一些散熱不太好的本子而言,這些選項(xiàng)似乎還有些誘惑力。此外,這篇文章的更重要的部分,就是教大家如何更進(jìn)一步地魔改 BIOS,讓一些廠家不想讓你看到的選項(xiàng)顯現(xiàn)出來(lái)。
我們依然以筆者的這臺(tái) YOGA 14s 2021 為示例。如果你和筆者一樣都已經(jīng)解鎖了“Advanced”選項(xiàng),那可以先在 PCH-IO Configuration 目錄下關(guān)閉 Flash Protection Range Registers (FPRR),以及其子目錄?Security Configuration 目錄下關(guān)閉 BIOS Lock,這樣我們就可以更方便地在 Windows 下直接以 FPT 工具進(jìn)行刷寫(xiě)而不用上編程器了。但務(wù)必要在折騰完后打開(kāi)這兩個(gè)選項(xiàng),防止惡意軟件對(duì) BIOS 進(jìn)行直接篡改。
同樣地,我們用 UEFI Tools 打開(kāi) BIOS 鏡像,并搜索 GUID:FE3542FE-C1D3-4EF8-657C-8048606FF670,或搜索 Text:SetupUtility:

右鍵這個(gè)模塊,導(dǎo)出到桌面,名字任意:

下載?Universal IFR Extractor,地址:https://github.com/donovan6000/Universal-IFR-Extractor。這個(gè)工具可以幫你分析 UEFI BIOS 的選項(xiàng)邏輯。用?Universal IFR Extractor 打開(kāi)之前提取的模塊:

點(diǎn)擊 Extract,生成一份 txt 文件:

打開(kāi)這個(gè)文件,你可能會(huì)被密密麻麻的文字嚇到:

但是不用擔(dān)心,我們的目的是要知道為什么沒(méi)有 Overclocking Performance 目錄,于是先搜索:

很快就找到了第一個(gè),瀏覽上下文,我們發(fā)現(xiàn)這就是定義 Advanced 目錄下子菜單的部分。不幸的是,我們心心念念的?Overclocking Performance 被加進(jìn)了一個(gè)判斷句中從而被 suppress (抑制)了。
我們來(lái)分析一下這個(gè)句子:
Suppress If: {0A 82}
? ? ? ? ? ? ? ? Variable 0xE50 equals 0x2 {12 06 50 0E 02 00}
? ? ? ? ? ? ? ? Ref: OverClocking Performance Menu, Variable: 0xFFFF {0F 0F 64 05 65 05 0C 00 00 00 FF FF 00 13 10}
? ? ? ? ? ? ? ? End If {29 02}
這個(gè)句子的邏輯是:如果變量 0xE50 等于 2,那就不顯示?OverClocking Performance Menu。
我們并不知道這個(gè)所謂的變量 0xE50 是在 BIOS 的哪里被定義的,但是可以肯定的是,在啟動(dòng) BIOS 時(shí)一定存在著變量 0xE50,并且等于 2,否則這個(gè)判斷就不成立,超頻目錄就正常顯示了。
那我們就修改判斷的標(biāo)準(zhǔn),比如如果變量 0xE50 等于 FF,那就不顯示?OverClocking Performance Menu。
觀察句子?Variable 0xE50 equals 0x2 后面的 Hex 值?12 06 50 0E 02 00:12 06 應(yīng)該是判斷方式(equal);50 0E 是變量名(要反過(guò)來(lái)看);02 00 是判斷的值。
那目標(biāo)就很明確了,我們修改判斷值 02 為 FF,需要的 Hex 就是:12 06 50 0E FF 00(結(jié)合上文體會(huì)一下)
于是我們用 HxD 打開(kāi) fbd 模塊,由于?12 06 50 0E 02 00 較短,為了準(zhǔn)確定位我們搜索 IFR 表中 Ref: OverClocking Performance Menu, Variable: 0xFFFF 對(duì)應(yīng)的 Hex:0F 0F 64 05 65 05 0C 00 00 00 FF FF 00 13 10:


我們可以發(fā)現(xiàn) IFR 表上的 Hex 與模塊的 Hex 是同樣排列的,0F 0F 64 05 65 05 0C 00 00 00 FF FF 00 13 10 之前就是?12 06 50 0E 02 00。
那我們就把 02 改成 FF:

之后保存,用 Universal IFR Extractor 再讀一次修改后模塊的 IFR 表:

用 UFEI Tools 替換模塊,保存 BIOS 鏡像并刷入。
迫不及待地進(jìn)入 BIOS,找到?OverClocking Performance Menu,驚訝地發(fā)現(xiàn)幾乎什么都調(diào)不了,OverClocking Feature 選項(xiàng)是灰色的不能調(diào)節(jié)!
只能又回到 IFR 表,找到?OverClocking Feature,發(fā)現(xiàn)也有個(gè)判斷句:

Grayout If: {19 82}
? ? ? ? ? ? ? ? Variable 0xF25 equals value in list (0x0) {14 08 25 0F 01 00 00 00}
? ? ? ? ? ? ? ? Setting: OverClocking Feature, Variable: 0x135 {05 91 66 05 67 05 F6 01 03 00 35 01 10 10 00 01 00}
? ? ? ? ? ? ? ? Option: Disabled, Value: 0x0 {09 07 04 00 30 00 00}
? ? ? ? ? ? ? ??Option: Enabled, Value: 0x1 {09 07 03 00 00 00 01}
? ? ? ? ? ? ? ??End of Options {29 02}
End If {29 02}
這個(gè)的意思是,如果變量 0xF25 等于列表中的某個(gè)值,那?OverClocking Feature 就會(huì)被 Grayout (變灰)。
那我們的目標(biāo)自然是?Variable 0xF25 equals value in list (0x0)?{14 08 25 0F 01 00 00 00}
從 IFR 的描述來(lái)看,這個(gè)列表只有一個(gè)值(0x0),所以 BIOS 啟動(dòng)時(shí) 0xF25 一定等于 0 。觀察這組 Hex,最后有三個(gè) 0 (14 08 25 0F 01 00 00 00),我并不知道哪個(gè)能影響整個(gè)列表,干脆隨便取了第二個(gè),在 HxD 里改成另一個(gè)非 0 的數(shù),比如 02:

保存模塊后再用?Universal IFR Extractor 讀一遍:

識(shí)別正確,于是替換模塊、刷入 BIOS,在 BIOS 里啟用?OverClocking Feature:


實(shí)測(cè),對(duì)于 1135G7 而言能折騰的東西實(shí)在不多,超頻是不可能的了,頂多在 Processor 里降壓。對(duì)于一些散熱不太好的設(shè)備應(yīng)該有些用處。但上文破解隱藏選項(xiàng)的方法應(yīng)該是通用的。不同品牌的機(jī)器都可以讀出機(jī)器 BIOS 的 IFR 表,如果你對(duì)哪個(gè)選項(xiàng)感興趣,但是機(jī)器 BIOS 又不顯示,那就用上文的方法進(jìn)行修改。