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