宏碁Acer5570z 如何刷bios 激活vista
這個bios屬於帶原生slic的 bios,MOD_4B00.ROM有pubkey,HOLE3.ROM裏面有marker,但是刷到有點機子裏就可以顯slic,有的就沒有,分析尾部發現沒有F8,不刷新80000到90000部分內容,而查看rom.log發現hole2正好位於這個部分裏面,官方網站bios裏的hole2裏面全是FF。
完美解決方案(猜測,未測試):從帶完整原生slic的5570系列機子裏提取hole2替換官網bios裏面的,修改尾部加F8強制刷新hole2模塊,這樣以後升級bios也不需要再破解了!
所以刷了官方bios能顯slic的兄弟能把妳機子裏的bios提取壹份出來給我嗎? 因為我懷疑妳的機子裏的hole2不為空。
參考這裏:
本文內容是遠景趙大俠的研究成果,本人稍加整理。
最近通過查看壹些帶完整原生slic的bios,發現廠商修改的bios大部分都不是將slic作為壹個單獨acpi模塊文件,這和大家以前的修改方法是不壹樣的。於是想自己動手試試用廠商這種方法修改我的神舟F205S的bios,經過趙兄的指點終於搞定了,現把方法整理出來供大家參考,希望對用Phoenix的 BIOS(特別是聯想機子,因為聯想的slic大部分都是這種改法)的兄弟有所啟發。
其實現在好多Phoenix BIOS都是帶原生slic的,只不過有可能刷新後用everest查看不到(解決方法看後面部分內容),首先判斷妳的bios是不是帶原生slic可以根據以下2點:
1. 在bioscodeX.rom(X壹般為1)中能搜索到slic表的表頭信息(oemid和oemtable可能為空或者是test之類的信息)
2. 在holeX.rom或者MOD_4A0X.ROM中能找到slic表的pubkey和marker部分
如果妳的bios符合以上2點基本就可以肯定妳的是帶原生slic的bios。因為上面3部分內容構成了完整的slic表(註意完整的slic表中的表頭和bioscodeX.rom中的表頭有幾個字符不壹致,這個是由後面內容自動生成的,不用理它的)。
對於這種bios,首選需要核對這3部分的信息是否是同壹廠商的,不是的話需要改過來,另外還需要核對RSDT的信息是否和SLIC信息壹致,不是的話也需要改過來,以上工作完成後如果妳的bios本來就能顯示slic表,刷完修改的基本就可以激活了,但是也有些bios刷新完修改了的bios之後,再查看slic表發現還是原來的,或者有的bios滿足上面的條件,但是用everest查看不到slic表,下面來討論這種特殊的bios,這也是本文的重點。
第壹種原因: 妳的bios加了判斷條件,,如果判斷失敗,復制SLIC表頭的代碼就不會執行,滿足條件才顯示slic表,下面以我的bios為例,具體bios判斷條件可能不壹樣的,僅供參考原理:
經過趙兄對同型號機型的顯示slic的bios和不顯示slic的bios反編譯對比發現如下代碼
seg0009CF call far ptr 0F000h:48B6h
seg0009D4 push ds
seg0009D5 push 0F000h
seg0009D8 pop ds
seg0009D9 assume ds:nothing
seg000:D9D9 mov eax, ds:48B2h
seg000:D9DD pop ds
seg000:D9DE assume ds:nothing
seg000:D9DE cmp eax, 22995668h
seg000:D9E4 jnz short loc_DA1D
得出結論0F000h:48B2h處的代碼如果是 22995668h ,就會有 SLIC表,22995668h 對應的字符為“hV”。經過搜索,在顯示slic的bios的HOLE5.ROM中發現字符“hV”,而不顯示slic的bios的HOLE5.ROM中則全是“FF”,這就是判斷條件!
所以用帶“hV”的HOLE5.ROM替換不帶“hV”的HOLE5.ROM即可刷出slic來。如果修改了HOLE5.ROM之後刷新完bios發現還是沒有slic表,那就是第二種原因引起的了:
第二種原因: 妳的bios的尾部加了刷新過濾規則,下面還是以我的bios為例,具體bios尾部的刷新過濾規則可能不壹樣的,僅供參考原理:
經過比較尾部(關於尾部請看本帖2樓介紹),發現新版bios的尾部比舊版bios的尾部少了2行,沒有 F4 和 F5,就是不刷 FFF40000 和 FFF50000,也就是不刷 HOLE5 和 HOLE3這2個模塊。事實上刷新的時候也是這樣的,壹個提示刷新17個模塊,壹個提示刷新19個模塊。
解決方法就是用舊版bios的整個尾部替換新版bios的整個尾部即可,或者也可以手動添加這2行。
至此,使用新方法修改bios成功。相對於以前大家手動加壹個acpi模塊的方法,這種方法更完美壹些,這也是官方的修改方法。
最後,想到壹點:記得有人說ibm的bios是壹樣的,刷到帶原生slic的機子裏就有slic,刷到不帶原生slic的機子裏就沒有slic,是不是也是靠尾部不刷類似hole5的判斷條件實現的啊?期待趙兄能最終能搞定ibm這個問題!
完整的Phoenix BIOS=“主bios”(0000~FFFF部分)+“尾部”(10000後面的壹小部分)!
winphlash備份出來的 BIOS 文件的“尾部”不是從 BIOS芯片中讀出來的,而是取自在“Specify new BIOS file”那壹欄的BIOS的文件。winphlash 的備份BIOS的方式:
1、讀入“Specify new BIOS file”那壹欄的BIOS的文件,分析BIOS的原大小,(winphlash 並不會判斷內存 FFF00000~FFFFFFFF 中的內容來分析BIOS的實際大小)如果 new BIOS 的實際大小是 512 K 就讀出內存的 FFF80000~FFFFFFFF 中的內容,如果 new BIOS 的實際大小是1024K 就讀出內存的 FFF00000~FFFFFFFF 中的內容,依次類推。
2、把步驟 1 中讀出的內存內容 和 new BIOS 的“尾部”合成壹個文件。這個文件就是妳備份出來的 BIOS 文件。
註意:
1. 不帶尾部的Phoenix BIOS是直接刷新不了的,只能用編程器刷。
2. 建議用1.3安裝版的winphlash進行備份,因為其他版本的winphlash備份出來的bios尾部會少了下面圖中選中的幾個字節。
7.jpg (97 KB)
3. 備份的時候用來做誘導的“新”bios如果不是本機bios的話備份出來的尾部可能不對,故推薦采用原機型能刷新的舊版bios做引導提取備份出本機bios。