婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Dell筆記本刷回低版本bios的方法詳細教程

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

熱門標簽:終于有外呼系統(tǒng) 南陽語音外呼系統(tǒng)廠家 杭州百應電話機器人價格 php外呼系統(tǒng) 什么地圖標注了釣點 無錫crm外呼系統(tǒng)公司 安逸花申請400電話 地圖標注后怎么發(fā)給人家 辦理400電話是免費的

  這兩天折騰 dell 筆記本(其型號是 vostro 2420),因為一些原因,把筆記本 bios 升級到了 A07,但是我又想把 bios 降級回原來的低版本時發(fā)現(xiàn)不行,最開始我使用的那個軟件對 bios 的備份文件竟然無法恢復(因為升級的時候太想盡快搞定所以沒有仔細看,可能是因為程序根本不適用該筆記本的主板型號導致的)!嘗試了網上的各種刷 bios 的軟件和方法(包括用 dos 下的 AFUDOS.exe 等等),全部失敗,對我造成不小的挫敗感和郁悶感。

  我先查看了另一臺相同型號的電腦的 bios 版本是 A03,因此我從 dell 官網上下載了 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ù)臍鈶崳琩ell 你這個程序憑什么自作主張呢,為什么禁止用戶降級 bios?

  我在嘗試了所有辦法均告失敗后,看起來那些網上的工具在此時全部不給力(大概是因為這個筆記本型號比較新的原因使得網上工具統(tǒng)統(tǒng)不適用),我不得不考慮一個最可靠最穩(wěn)妥地方法,用 Dell 官網上的 bios 更新程序刷回去(因為官網可以明確的下載到和機器型號嚴格匹配的 bios 更新)。很顯然,因為我的bios版本已經被我刷至 A07,我想刷回的是版本更低的 A03,我知道這個程序執(zhí)行到最后會彈出那個超級腦殘讓人絕望的提示,然后退出。因此身處絕境之中這時候唯一想法就是:修改這個程序!找到彈出這個 MessageBox 的代碼然后逆轉他的邏輯!這是我此時最后一根救命稻草,也是唯一的希望,如果依然失敗我不得不接受這個讓我郁悶的現(xiàn)實(那就是將就著用吧),但這最后的救命稻草終將拯救我于危難。

  于是開工。啟動 IDA,打開 2420A03.exe 這個程序,等待一會讓 IDA 分析完畢。讓我感到高興的好消息是,這個程序沒有任何的加密和自我保護。很顯然它是被直接寫出來的程序(從未考慮過防止有人會去修改它而采取保護手段),我又查看了這個程序的資源,感覺里面有一些對話框,仿佛這個程序是對 ALUWINGUI 程序的一種“封裝”,因為里面都是一些 ALUWINGUI 程序的印記,例如對話框等等。但是我運行網上下載的 ALUWINGUI 這個程序卻總是出現(xiàn)死機狀態(tài),所以不得把注意力繼續(xù)轉會到反匯編分析 2420A03.exe 這個程序上。

  彈出這個 MessageBox 的代碼非常容易定位,因為這個 MessageBox 的文本內容是明文放在 .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

  大概瀏覽一下這個函數(shù),發(fā)現(xiàn)第11行代碼:“jnb loc_466EF0” 就是關鍵分支點,如果 var_10C var_204 ,他就會彈出我們最后見到的那個 MessageBox,否則他就會跳轉到附近的 00466EF0 位置去正常的刷 bios。所以這里只要把 jnb 改成 jb,程序就會完全以相反邏輯運行(把正在刷低版本 bios 當成刷高版本)。

  為了修改匯編代碼,還需要參考 intel 的官方文檔:《64 ia 32 architectures software developer manual 325462》。對照文檔可以指導我們如何修改指令。

  在 IDA 中顯示 jnb loc_466EF0 指令對應的是 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)。

  接下來就是修改這條跳轉指令,有多種方法(以下操作碼中的操作數(shù)均為相對值,即偏移量):

  (1)把 JNB 改成 JB(操作碼:0F 82)。只有待刷版本低于當前版本才刷。

  (2)把 JNB 改成 JNZ (操作碼:0F 85)。只要待刷版本和當前版本不同就刷。

  (3)把 JNB 改成 JMP(操作碼:E9)。無條件刷。(因為 JMP 操作碼只有一個字節(jié),所以需要補一個 NOP ),有可能還需要修改一個版本相等的跳轉,我沒有認真細看了。

  這里我采用的是(1)。把該 exe 用 16 進制編輯器例如 UltraEdit 打開,IDA中的是進程空間中的邏輯地址,把 ImageBase 減掉就成為文件地址,而 Exe 的默認 ImageBase 是 00400000,所以 00466E21 轉換到文件地址是 00066E21,跳轉到 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 如預期的沒有出現(xiàn),而是出現(xiàn)了系統(tǒng)正在關機的提示(有希望了!),然后系統(tǒng)自動重啟,激動人心的時刻到了,終于看到進入正在刷新 bios 的提示(如下圖所示),大約1~2分鐘,bios 刷新完成,然后經過再次進入 bios 簡單檢查版本信息,已經回到 A03 版本一切正常!!!

  至此,刷回低版本 bios 就完成了。如果要刷其他版本的 bios 我估計這里是差不多的,一旦遇到這種版本問題導致的不讓你刷,就可以對這個文件進行修改。好在這些 bios 升級程序并沒有對這種修改設置任何障礙,因此只要具有一點匯編知識,借助工具就可以很容易的修改掉這個邏輯。最后額外吐槽一下,dell 的這個不合理的邏輯,自由權應該交給用戶決定!同時,眾所周知,刷 bios 被形容為具有風險的事情,我的個人意見時,一定要謹慎,如果不是特殊需要(例如為了激活 win7 以上系統(tǒng))和有成功的把握,就盡量不要去刷 bios。最后關于激活 win7 再額外說一點,目前幾乎所有軟破解方法和網上流傳的 key 已經全部失效,而只剩下最后一條路,就是從 bios 上入手(也就是不管用軟件還是硬刷 bios,使 bios 中具有 SLIC 2.1 版本),模擬成大的筆記本 oem 廠商的產品,這樣 windows 就只能放行,因為盡管這種用手段激活的“盜版”用戶數(shù)量很多,但是因為它們混雜在數(shù)量更加龐大的正版 oem 產品之中,而目前 windows 的認證技術還不足以能識別,所以這種“盜版”幾乎肯定是安全的。

【補充】BiosFix 程序下載鏈接:

  BiosFix(刷Bios程序輔助工具) 免費綠色版

  說明:該程序是我寫的一個命令行程序。因為 Bios 程序需要做的改動很小(目前只需調整一條指令的機器碼,只涉及 1~2 個字節(jié)),有了這個程序,我只需要提供 Fix 信息,有用戶自己完成 Fix,而不再需要我上傳較大的 Fixed 結果,這樣就可以節(jié)省網絡傳輸流量和存儲空間。附件中包含程序,配置文件,和程序的源代碼,以及使用說明。

  用法:

  命令行格式: BiosFix.EXE "XXXX.EXE"

例如輸入:    BiosFix.EXE "D:\M8888A03.EXE"

  輸出文件是: "D:\M8888A03_Fixed.EXE"

  如果直接雙擊文件打開,則程序會提示用戶手工輸入 Bios 程序路徑,這時首尾不需要加雙引號。例如,在 cmd.exe 中可以看到程序產生如下輸出:

  >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ù)關注腳本之家網站!

標簽:內江 菏澤 阜新 山東 隨州 來賓 四平 駐馬店

巨人網絡通訊聲明:本文標題《Dell筆記本刷回低版本bios的方法詳細教程》,本文關鍵詞  Dell,筆記本,刷回,低,版本,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Dell筆記本刷回低版本bios的方法詳細教程》相關的同類信息!
  • 本頁收集關于Dell筆記本刷回低版本bios的方法詳細教程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 北京市| 遵义市| 巴彦县| 南岸区| 汉川市| 竹北市| 洱源县| 宿迁市| 万安县| 阿鲁科尔沁旗| 思南县| 汽车| 思南县| 沂源县| 盐津县| 阿巴嘎旗| 安西县| 陆良县| 宁远县| 台中县| 重庆市| 华蓥市| 本溪| 高淳县| 大理市| 澄江县| 湖南省| 汝州市| 石狮市| 扶风县| 普洱| 临夏县| 乃东县| 定襄县| 德昌县| 临沭县| 余姚市| 卢氏县| 玉环县| 荔浦县| 京山县|