Dell筆記本刷回低版本bios的方法詳細(xì)教程

這兩天折騰 dell 筆記本(其型號是 vostro 2420),因為一些原因,把筆記本 bios 升級到了 A07,但是我又想把 bios 降級回原來的低版本時發(fā)現(xiàn)不行,最開始我使用的那個軟件對 bios 的備份文件竟然無法恢復(fù)(因為升級的時候太想盡快搞定所以沒有仔細(xì)看,可能是因為程序根本不適用該筆記本的主板型號導(dǎo)致的)!嘗試了網(wǎng)上的各種刷 bios 的軟件和方法(包括用 dos 下的 AFUDOS.exe 等等),全部失敗,對我造成不小的挫敗感和郁悶感。
我先查看了另一臺相同型號的電腦的 bios 版本是 A03,因此我從 dell 官網(wǎng)上下載了 A03 版本的 bios 更新程序(2420A03.EXE),然而當(dāng)你要更新 bios,他會提示“You are about to flash your bios to an older Bios version. Dell does not recommend flashing your Bios to an older version. Press OK button to exit.” 當(dāng)你點擊確定,程序就退出了,讓人對此相當(dāng)?shù)臍鈶?,dell 你這個程序憑什么自作主張呢,為什么禁止用戶降級 bios?
我在嘗試了所有辦法均告失敗后,看起來那些網(wǎng)上的工具在此時全部不給力(大概是因為這個筆記本型號比較新的原因使得網(wǎng)上工具統(tǒng)統(tǒng)不適用),我不得不考慮一個最可靠最穩(wěn)妥地方法,用 Dell 官網(wǎng)上的 bios 更新程序刷回去(因為官網(wǎng)可以明確的下載到和機器型號嚴(yán)格匹配的 bios 更新)。很顯然,因為我的bios版本已經(jīng)被我刷至 A07,我想刷回的是版本更低的 A03,我知道這個程序執(zhí)行到最后會彈出那個超級腦殘讓人絕望的提示,然后退出。因此身處絕境之中這時候唯一想法就是:修改這個程序!找到彈出這個 MessageBox 的代碼然后逆轉(zhuǎn)他的邏輯!這是我此時最后一根救命稻草,也是唯一的希望,如果依然失敗我不得不接受這個讓我郁悶的現(xiàn)實(那就是將就著用吧),但這最后的救命稻草終將拯救我于危難。
于是開工。啟動 IDA,打開 2420A03.exe 這個程序,等待一會讓 IDA 分析完畢。讓我感到高興的好消息是,這個程序沒有任何的加密和自我保護(hù)。很顯然它是被直接寫出來的程序(從未考慮過防止有人會去修改它而采取保護(hù)手段),我又查看了這個程序的資源,感覺里面有一些對話框,仿佛這個程序是對 ALUWINGUI 程序的一種“封裝”,因為里面都是一些 ALUWINGUI 程序的印記,例如對話框等等。但是我運行網(wǎng)上下載的 ALUWINGUI 這個程序卻總是出現(xiàn)死機狀態(tài),所以不得把注意力繼續(xù)轉(zhuǎn)會到反匯編分析 2420A03.exe 這個程序上。
彈出這個 MessageBox 的代碼非常容易定位,因為這個 MessageBox 的文本內(nèi)容是明文放在 .rdata 的,非常容易就定位到彈出這個 MessageBox 的代碼的位置,找到它們以后,繼續(xù)向前追蹤程序跳轉(zhuǎn)的關(guān)鍵節(jié)點,很快就找到位于(.text)地址 00466E21 處,代碼如下:
.text:00466E00 .text:00466E00 loc_466E00: ; CODE XREF: sub_466D40+9Fj .text:00466E00 ; sub_466D40+B7j .text:00466E00 push offset aWarning_4 ; "WARNING" .text:00466E05 lea eax, [ebp+Caption] .text:00466E0B push eax ; LPSTR .text:00466E0C call ds:wsprintfA .text:00466E12 add esp, 8 .text:00466E15 mov ecx, [ebp+var_10C] .text:00466E1B cmp ecx, [ebp+var_214] .text:00466E21 jnb loc_466EF0 ; 【重要】要修改的指令! .text:00466E27 movzx edx, word_5072F8 .text:00466E2E and edx, 80h .text:00466E34 jz short loc_466E93 .text:00466E36 push offset aWarning_5 ; "WARNING!!" .text:00466E3B lea eax, [ebp+Caption] .text:00466E41 push eax ; LPSTR .text:00466E42 call ds:wsprintfA .text:00466E48 add esp, 8 .text:00466E4B push offset aYouAreAboutToF ; "You are about to flash your BIOS to an "... .text:00466E50 lea ecx, [ebp+Text] .text:00466E56 push ecx ; LPSTR .text:00466E57 call ds:wsprintfA .text:00466E5D add esp, 8 .text:00466E60 push 31h ; uType .text:00466E62 lea edx, [ebp+Caption] .text:00466E68 push edx ; lpCaption .text:00466E69 lea eax, [ebp+Text] .text:00466E6F push eax ; lpText .text:00466E70 push 0 ; hWnd .text:00466E72 call ds:MessageBoxA .text:00466E78 cmp eax, 1 .text:00466E7B jnz short loc_466E87
大概瀏覽一下這個函數(shù),發(fā)現(xiàn)第11行代碼:“jnb loc_466EF0” 就是關(guān)鍵分支點,如果 var_10C < var_204 ,他就會彈出我們最后見到的那個 MessageBox,否則他就會跳轉(zhuǎn)到附近的 00466EF0 位置去正常的刷 bios。所以這里只要把 jnb 改成 jb,程序就會完全以相反邏輯運行(把正在刷低版本 bios 當(dāng)成刷高版本)。
為了修改匯編代碼,還需要參考 intel 的官方文檔:《64 ia 32 architectures software developer manual 325462》。對照文檔可以指導(dǎo)我們?nèi)绾涡薷闹噶睢?/p>
在 IDA 中顯示 jnb loc_466EF0 指令對應(yīng)的是 6 個字節(jié):“0F 83 C9 00 00 00”,對照文檔的介紹可知,前兩個字節(jié)"0F 83" 是 JNB 的操作碼(Opcode),后面四個字節(jié)“C9 00 00 00” 代表地址偏移量是 0xC9 (201)個字節(jié)(即: if not below, then EIP = EIP + 0xC9)。
接下來就是修改這條跳轉(zhuǎn)指令,有多種方法(以下操作碼中的操作數(shù)均為相對值,即偏移量):
?。?)把 JNB 改成 JB(操作碼:0F 82)。只有待刷版本低于當(dāng)前版本才刷。
?。?)把 JNB 改成 JNZ (操作碼:0F 85)。只要待刷版本和當(dāng)前版本不同就刷。
?。?)把 JNB 改成 JMP(操作碼:E9)。無條件刷。(因為 JMP 操作碼只有一個字節(jié),所以需要補一個 NOP ),有可能還需要修改一個版本相等的跳轉(zhuǎn),我沒有認(rèn)真細(xì)看了。
這里我采用的是(1)。把該 exe 用 16 進(jìn)制編輯器例如 UltraEdit 打開,IDA中的是進(jìn)程空間中的邏輯地址,把 ImageBase 減掉就成為文件地址,而 Exe 的默認(rèn) ImageBase 是 00400000,所以 00466E21 轉(zhuǎn)換到文件地址是 00066E21,跳轉(zhuǎn)到 00066E20 這一行,把從第二個字節(jié)開始的 6 個字節(jié)(0F 83 C9 00 00 00)修改成 (0F 82 C9 00 00 00),實際上我們只是修改了一個字節(jié)(文件地址為 00066E22 的那個字節(jié)從 0x83 改為 0x82),這樣原來的 JNB 指令就變成了 JB 指令。
修改以后,運行修改后的 exe 程序,那個煩人的 MessageBox 如預(yù)期的沒有出現(xiàn),而是出現(xiàn)了系統(tǒng)正在關(guān)機的提示(有希望了?。?,然后系統(tǒng)自動重啟,激動人心的時刻到了,終于看到進(jìn)入正在刷新 bios 的提示(如下圖所示),大約1~2分鐘,bios 刷新完成,然后經(jīng)過再次進(jìn)入 bios 簡單檢查版本信息,已經(jīng)回到 A03 版本一切正常!??!
至此,刷回低版本 bios 就完成了。如果要刷其他版本的 bios 我估計這里是差不多的,一旦遇到這種版本問題導(dǎo)致的不讓你刷,就可以對這個文件進(jìn)行修改。好在這些 bios 升級程序并沒有對這種修改設(shè)置任何障礙,因此只要具有一點匯編知識,借助工具就可以很容易的修改掉這個邏輯。最后額外吐槽一下,dell 的這個不合理的邏輯,自由權(quán)應(yīng)該交給用戶決定!同時,眾所周知,刷 bios 被形容為具有風(fēng)險的事情,我的個人意見時,一定要謹(jǐn)慎,如果不是特殊需要(例如為了激活 win7 以上系統(tǒng))和有成功的把握,就盡量不要去刷 bios。最后關(guān)于激活 win7 再額外說一點,目前幾乎所有軟破解方法和網(wǎng)上流傳的 key 已經(jīng)全部失效,而只剩下最后一條路,就是從 bios 上入手(也就是不管用軟件還是硬刷 bios,使 bios 中具有 SLIC 2.1 版本),模擬成大的筆記本 oem 廠商的產(chǎn)品,這樣 windows 就只能放行,因為盡管這種用手段激活的“盜版”用戶數(shù)量很多,但是因為它們混雜在數(shù)量更加龐大的正版 oem 產(chǎn)品之中,而目前 windows 的認(rèn)證技術(shù)還不足以能識別,所以這種“盜版”幾乎肯定是安全的。
【補充】BiosFix 程序下載鏈接:說明:該程序是我寫的一個命令行程序。因為 Bios 程序需要做的改動很?。壳爸恍枵{(diào)整一條指令的機器碼,只涉及 1~2 個字節(jié)),有了這個程序,我只需要提供 Fix 信息,有用戶自己完成 Fix,而不再需要我上傳較大的 Fixed 結(jié)果,這樣就可以節(jié)省網(wǎng)絡(luò)傳輸流量和存儲空間。附件中包含程序,配置文件,和程序的源代碼,以及使用說明。
用法:
命令行格式: BiosFix.EXE "XXXX.EXE"
例如輸入: BiosFix.EXE "D:\M8888A03.EXE"
輸出文件是: "D:\M8888A03_Fixed.EXE"
如果直接雙擊文件打開,則程序會提示用戶手工輸入 Bios 程序路徑,這時首尾不需要加雙引號。例如,在 cmd.exe 中可以看到程序產(chǎn)生如下輸出:
>BiosFix
Input the source bios file[XXX.exe] to fix:
>E:\Bios_Fix\5437A00.EXE
ImageBase: 00400000H
NumberOfSections: 4
----------------[FixNo: 01]-----------------
VA: 004693B1H
FA: 00068DB1H
Overwrite 2 Bytes (JNB->JNZ);
----------------[Fix Completed!]-----------------
The Fixed File is:
E:\Bios_Fix\5437A00_Fixed.EXE
以上就是Dell筆記本刷回低版本bios的方法詳細(xì)教程,更多教程內(nèi)容請繼續(xù)關(guān)注腳本之家網(wǎng)站!
相關(guān)文章
- BIOS(基本輸入輸出系統(tǒng))是一種固件,它位于計算機的主板上,負(fù)責(zé)初始化硬件和啟動操作系統(tǒng),它有什么作用?密碼鎖死該怎么結(jié)局餓呢?詳細(xì)請看下文介紹2024-05-30
bios如何恢復(fù)默認(rèn)設(shè)置?bios恢復(fù)默認(rèn)設(shè)置的方法
bios如何恢復(fù)默認(rèn)設(shè)置?BIOS是計算機重要的基礎(chǔ)設(shè)置,想要恢復(fù)默認(rèn)設(shè)置該如何讓操作呢,下面就跟隨小編一起看看2020-12-04- BIOS對計算機基礎(chǔ)設(shè)置十分重要,現(xiàn)在大家都用U盤來裝系統(tǒng),有的人初次接觸裝機不明白怎么設(shè)置。由于不同的主板BIOS設(shè)置也不同,有的用戶找不到USB-HDD選項,U盤裝系統(tǒng)首先2020-11-25
如何刷新bios?在windows系統(tǒng)上刷新bios的方法
現(xiàn)在人們使用電腦很少回去更新主板bios,其實刷新bios可以帶來新的功能和CPU支持,現(xiàn)在技術(shù)發(fā)展那么快,為了保證更好的兼容性,刷新主板bios是非常有必要的2020-11-25Secure Boot什么意思?BIOS中Secure Boot灰色無法更改解決方法詳解
在電腦Bios設(shè)置中,有一項“Secure Boot”相關(guān)設(shè)置,很多朋友不知道Secure Boot什么意思,也不知道該如何設(shè)置。下面本文就來談?wù)凷ecure Boot設(shè)置相關(guān)的知識,需要的朋友可2018-03-22電腦進(jìn)入bios關(guān)閉網(wǎng)卡的技巧
華碩電腦開機時顯示一連串字符并且沒辦法正常進(jìn)入系統(tǒng)中,多次重啟都出現(xiàn)這樣的狀況,到底是怎么回事?下面小編給大家分享電腦進(jìn)入bios關(guān)閉網(wǎng)卡的技巧,需要的朋友參考下吧2017-11-23- 這篇文章主要介紹了惠普臺式筆記本一體機電腦BIOS中文版對照圖解介紹,需要的朋友可以參考下2017-09-02
電腦BIOS怎么設(shè)置光盤啟動 三種類型BIOS設(shè)置光驅(qū)啟動的圖文詳解教程
怎么設(shè)置電腦BIOS讓電腦使用光盤啟動呢?如何使用光盤安裝電腦系統(tǒng)?BIOS怎么修改為光盤啟動?本文將給大家介紹三種常見類型的BIOS的光盤啟動設(shè)置方法,下面請看具體操作步2017-09-02- 對與經(jīng)常玩電腦的朋友來說,對與BIOS、COMS可能有點陌生,對于經(jīng)常修電腦的朋友來說COMS可能會經(jīng)常接觸,今天我們來簡單的說下coms設(shè)置圖解,感興趣的朋友一起看看吧2017-08-29
- 映泰主板是非常多用戶使用的主板,但是也是有很多用戶不知道映泰主板bios設(shè)置的方法。今天小編就把映泰主板bios設(shè)置圖解教程分享給大家,感興趣的朋友參考下吧2017-08-17