朗科發(fā)布存儲卡CF2000:3D(朗科存儲卡怎么樣)
2024-02-22
更新時間:2024-02-24 00:16:38作者:未知
這兩天折騰 dell 筆記本(其型號是 vostro 2420),因為一些原因,把筆記本 bios 升級到了 A07,但是我又想把 bios 降級回原來的低版本時發(fā)現(xiàn)不行,最開始我使用的那個軟件對 bios 的備份文件竟然無法恢復(因為升級的時候太想盡快搞定所以沒有仔細看,可能是因為程序根本不適用該筆記本的主板型號導致的)!嘗試了網(wǎng)上的各種刷 bios 的軟件和方法(包括用 dos 下的 AFUDOS.exe 等等),全部失敗,對我造成不小的挫敗感和郁悶感。
我先查看了另一臺相同型號的電腦的 bios 版本是 A03,因此我從 dell 官網(wǎng)上下載了 A03 版本的 bios 更新程序(2420A03.EXE),然而當你要更新 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.” 當你點擊確定,程序就退出了,讓人對此相當?shù)臍鈶?,dell 你這個程序憑什么自作主張呢,為什么禁止用戶降級 bios?
我在嘗試了所有辦法均告失敗后,看起來那些網(wǎng)上的工具在此時全部不給力(大概是因為這個筆記本型號比較新的原因使得網(wǎng)上工具統(tǒng)統(tǒng)不適用),我不得不考慮一個最可靠最穩(wěn)妥地方法,用 Dell 官網(wǎng)上的 bios 更新程序刷回去(因為官網(wǎng)可以明確的下載到和機器型號嚴格匹配的 bios 更新)。很顯然,因為我的bios版本已經(jīng)被我刷至 A07,我想刷回的是版本更低的 A03,我知道這個程序執(zhí)行到最后會彈出那個超級腦殘讓人絕望的提示,然后退出。因此身處絕境之中這時候唯一想法就是:修改這個程序!找到彈出這個 MessageBox 的代碼然后逆轉他的邏輯!這是我此時最后一根救命稻草,也是唯一的希望,如果依然失敗我不得不接受這個讓我郁悶的現(xiàn)實(那就是將就著用吧),但這最后的救命稻草終將拯救我于危難。
于是開工。啟動 IDA,打開 2420A03.exe 這個程序,等待一會讓 IDA 分析完畢。讓我感到高興的好消息是,這個程序沒有任何的加密和自我保護。很顯然它是被直接寫出來的程序(從未考慮過防止有人會去修改它而采取保護手段),我又查看了這個程序的資源,感覺里面有一些對話框,仿佛這個程序是對 ALUWINGUI 程序的一種“封裝”,因為里面都是一些 ALUWINGUI 程序的印記,例如對話框等等。但是我運行網(wǎng)上下載的 ALUWINGUI 這個程序卻總是出現(xiàn)死機狀態(tài),所以不得把注意力繼續(xù)轉會到反匯編分析 2420A03.exe 這個程序上。
彈出這個 MessageBox 的代碼非常容易定位,因為這個 MessageBox 的文本內(nèi)容是明文放在 .rdata 的,非常容易就定位到彈出這個 MessageBox 的代碼的位置,找到它們以后,繼續(xù)向前追蹤程序跳轉的關鍵節(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