當前位置:首頁 » 編程軟體 » bios反編譯

bios反編譯

發布時間: 2022-10-23 08:44:46

⑴ Vista如何刷新BIOS

宏碁5570系列bios激活vista完美方案【升級BIOS不用再破解】

這個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。

⑵ e430c可以刷中文bios

e430c可以刷中文bios。
聯想幾乎所有筆記本都存在一個叫做無線網卡白名單的東西,因此想更換網卡需要反編譯官方BIOS固件,將白名單去除。一般可以在很多網站上找到去白名單版BIOS固件和刷入方法,一般都不費。

⑶ BIOS中"ACPI Function" 選項不能改為"Disabled"

如果一定要關掉它,可以修改Bios重新刷寫.
取出Bios內容用專門軟體cbrom解開,可直接刪除ACPI模塊或者對其反編譯,重新製作(高難高高難).然後重新刷寫回去.

⑷ 咋修改BIOS使老主板支持從pciessd啟動系統

我覺得修改的話要貼近實際,符合更多人的利益,讓更多人有這個需求。這樣就會得到普遍人的認可。

⑸ BIOS文件用什麼反編譯,來看它的源程序

匯編語言或機器語言,現在隨著BIOS容量的增大,也可以用C,C++語言寫的了.

⑹ 如何使用ACPI Patcher製作DSDT補丁

很多人都知道使用DSDT補丁可以開雙核,但DSDT的功能不僅僅如此,除了開雙核,還可以可以修復ACPI缺陷(不需要Disabler.kext,原版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),顯卡(代替efistring),音效卡(只是代替了HDAEnabler.kext),網卡(包括TimeMachine問題),此外還可以解決其他很多奇奇怪怪的問題,因此建議盡可能使用DSDT補丁。

但是DSDT到底是什麼東西,怎麼這么神奇呢?這個要從ACPI說起了,ACPI是Intel(i386,x86_64,IA64)平台的標准固件規范,絕大部分OS需要從BIOS得到的信息都可以從ACPI得到,並且現在的趨勢是未來的任何新的特性相關的信息都只能從ACPI得到。

ACPI的信息包括:
配置信息,這些信息從legacyPNP設備的配置,到多處理器,到NUMA,比如現在的MultipleCore的信息就只能從ACPI得到。linux啟動很多代碼就是處理這些配置信息,比如APIC,IOAPIC設置等。
ACPI相關設備,主要是筆記本電腦相關的設備,包括電源按鈕,電池,外接電源,風扇,熱鍵等。
底層硬體,比如PCI中斷路由,chipset(主要是南橋PCI-to-LPCbridge)操作等。
電源管理,ACPI定義的電源管理包括CPU的電源管理(調頻率P-state,idleC-state,throtting T-state),設備電源管理(D-state),系統電源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。
設備熱插拔,ACPI用一種統一的方式來描述設備的熱插拔,這樣的設備從單一的PCI設備,到筆記本電腦的DockingStation,到整個PCI hierarchy,CPU,Memory,甚至整個NUMA節點。

可以說要理解現代PC平台必須了解ACPI。ACPI主要是由很多表(Table)組成,而DSDT(Differentiated System Description Table)是其中一個最主要的ACPI表之一,它的定義如下

DSDT is an acronym for DifferentiatedSystem Description Table. Thistable contains theDifferentiated Definition Block, which supplies theinformation and configuration information about the base system.

簡單說就是包含了所有和基本系統(basesystem)不同的設備的信息,basesystem每台機器都是一樣的,這個是在acpispec里指定的,但是每台機器都是不相同的,所以不相同的設備大都是由DSDT表來描述。它包含了很多AML代碼。大多數BIOS是針對windows開發的,而windows自己也不完全遵循acpi規范,所以因為BIOS的bug,這些代碼本身可能有錯,導致其他的系統,如linux,mac os出錯。

我們可以手動修復這些bug使之兼容MAC系統。DSDT在bios里是以編譯後的aml文件存在,需要把它解出來,反編譯成aml代碼形式(dsl文件,文本文件),代碼修改完畢再重新編譯,替換掉bios里原來的dsdt表。不過PC-EFI,Chameleon的出現,使得我們不再需要冒險刷bios,只要把製作好的DSDT.aml文件放在根目錄或者/Extra文件夾里,啟動的時候就會自動使用這個DSDT.aml,從而達到修復ACPI系統bug的作用。

但是DSDT補丁怎麼製作,卻很少有人能詳細的介紹,mac上的軟體基本上只能製作解決雙核,acpi問題的dsdt.aml,要想解決更多的問題,就必須回到windows,使用insanelymac論壇里的一款軟體ACPIPatcher,這個軟體相對比較復雜,今天我們就來了解一下這個軟體的用法。

軟體界面如上圖,左上可以指定bios和製作補丁,右上是具體選擇補丁選項的地方,左下是輸出信息,右下可以看到進度。
先來看左上部分各個標簽的具體作用。

BIOSPatch:選擇一個bios製作dsdt.aml,選擇bios文件和指定輸出dsdt.aml目錄之後,選中GenerateDSDT.aml,然後按下Patch Bios按鈕即可,輸出目錄不可以是bios目錄,否則會出錯

DSDTPatch:對一個已有的DSDT.aml進行acpi修復,選擇DSDT.aml,指定輸出目錄,按下PatchAML即可

ImportDSDT:用已有的DSDT.dsl對bios打補丁,選擇輸入dsl文件和bios,按下PatchBios即可

ExportDSDT:從bios里解出DSDT.dsl文件,選擇bios文件和輸出目錄,按下Exact即可

D/CDSDT:DSL編譯成AML文件,或者AML文件反編譯成DSL文件,取決於選中Compile還是Decomplie,選中Compile的時候如果同時選中Patchbefore compile,可以在把DSL編譯成AML文件的時候打上ACPI補丁。

看完了左上的標簽我們來看最重要的部分,右上bugfix的詳細信息,

General:

這里有三個最重要的修復,HPETPatch,RTCPatch和AliasesPatch,前兩個可以解決一些時鍾方面的問題,很多機器里如果有AppleIntelCPUPowerManagement.kext就會四國,或者不能正常使用,需要Disabler.kext,如果你選了前兩項,從此可以扔掉Disabler.kext,因為AppleIntelCPUPowerManagement.kext可以正常工作了,第三個選項也許更加重要,AliasesPatch直接對應是否能開雙核,對asus,msi的主板來說,這個選項是非常重要的,技嘉沒有這個問題,選不選都無所謂。

點擊Fixes…可以看到一個新窗口

這里都是一些針對編譯時出現error或者warning的fix,作者的意見是當出現這些error或者warning的時候可以選擇,我的意見時全部選擇,防止出現error或者warning,如果還有問題,就需要去網上搜索解決方案,自己動手修改代碼然後再編譯了。

Network:

這里相對比較復雜,你需要知道硬體位置,這個可以用ioRegistryExplorer來看,Lan0應該是百兆網卡而GIGE是千兆網卡,FixGP9指增加一個GPIO9的控制項,UseTime Machine Fix修復Time Machine找不到內置網卡的問題,下面是針對技嘉P43 P45 Realtek 8111c千兆網卡的設置圖,它的硬體位置在PEX 5

Graphics:

這里合理設置後完全可以代替efi-string,natit,nvinject,nvdarwin,nvkush等,首先在model那裡選擇顯卡型號和顯存大小,下面綠色的選項針對N卡,紅色的針對A卡,N卡需要設置nvcap值,A卡需要設置Framebuffer和DevID,Hardwarelocation需要用ioRegistryExplorer看下,PEGP和Use DSDT GFX都要選中。

這里以硬體地址PCI 0為例,分別給出nVidia8800 GT 512MB和ATI HD3870 512MB顯卡的示例。

nVidia 8800 GT512MB

ATI HD3870 512MB

Audio:

通過設置audio可以代替HDAEnabler.kext,設置很簡單,AudioChipset里預置了三種,Realtek ALC888-0,Realtek ALC888-2,RealtekALC889a,ALC888分別對應address 0和address 2,技嘉P43, P45板載的ALC888選RealtekALC888-0,ALC889選Realtek ALC889a,此外還要選中Use HDEF Audio,下面以889為例

看完bug fix來看看左下角的兩個編譯選項,ForceDSDT Compilation表示強制編譯,即便出現錯誤,Stop on compilation Warning表示出現warning時停止編譯,追求完美的人可以選擇此項,因為0error,0warning的dsdt表示沒有任何語法錯誤。

右邊還有一個選項是bios類型選擇,根據你的bios類型選擇Award還是AMI,技嘉的bios是Award

目前市面上較流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三種類型。
Award
Award BIOS是由Award Software公司開發的BIOS產品,在目前的主板中使用最為廣泛。Award BIOS功能較為齊全,支持許多新硬體,目前市面上多數主機板都採用了這種BIOS。
AMI
AMI BIOS是AMI公司(全稱:American Megatrends Incorporated)出品的BIOS系統軟體,開發於80年代中期,早期的286、386大多採用AMI BIOS,它對各種軟、硬體的適應性好,能保證系統性能的穩定,到90年代後,綠色節能電腦開始普及,AMI卻沒能及時推出新版本來適應市場,使得Award BIOS佔領了大半壁江山。當然現在的ami也有非常不錯的表現,新推出的版本依然功能強勁。
Phoenix
Phoenix BIOS是Phoenix公司產品,Phoenix意為鳳凰或埃及神話中的長生鳥,有完美之物的含義。Phoenix BIOS 多用於高檔的586原裝品牌機和筆記本電腦上,其畫面簡潔,便於操作。
Insyde
Insyde bios 是台灣的一家軟體廠商的產品,是一種新興的BIOS類型,被某些基於英特爾晶元的筆記本電腦採用,如神舟、聯想。

下面我們以技嘉GIGA EP43-UD3L為例,實際操作一次,顯卡是nVidiaGeforce 9800 GTX 512MB,音效卡是ALC888。
設置輸入輸出路徑,BIOS類型,Stopon warning,General設置

補丁詳細設置

然後按下Patch Bios,運行完畢可以看到成功編譯,而且可以看到編譯過程中出現 0Errors, 0 Warnings, 0 Remarks, 660 Optimizations。

此時到輸出目錄里可以看到dsdt.aml,此外,bios文件下面還會生成patch過的以new結尾的bios文件,如ep43ud3l.f4.new,如果你確認dsdt.aml可以使用,那麼這個bios也是可以使用的,有需要的話可以自行刷bios,不過刷機有風險,還請慎重。

dsdt.aml的使用非常簡單,首先確保你安裝了支持dsdt的引導,如PC-EFIV9,Chameleon1.0.12或者Chameleon 2 RC1,推薦最新的Chameleon2 RC1,然後把dsdt.aml放在系統盤的根目錄或者Extra文件夾里,如果是efi分區啟動,放在efi分區的Extra文件夾里就可以了。

到此,本次講座就算是結束了。全文完整的doc檔和acpi patcher可以在附件下載到。

一點小更新,如果你用acpi patcher得不到DSDT,比如ASUS,MSI的部分主板,你可以在linux下通過在終端里運行
cat /proc/acpi/dsdt > dsdt.aml
得到,然後用acpi patcher把它反編譯得到dsdt.dsl就可以修改了
如果你可以進入mac,那麼用附件里的getdsdt腳本也可以得到dsdt.dat,重命名為dsdt.aml即可

⑺ 請問BIOS程序是匯編語言程序嗎

這個問題是一個陷阱。
保存在BIOS的程序,是編譯好的機器語言。

匯編語言是一種在機器語言之上的,方便供程序員讀寫的編程語言,它的語法最接近機器語言,
相對機器語言來說,它是高級語言。匯編語言的代碼是不能被機器執行的,必須經過「翻譯」(即編譯)之後,把匯編代碼翻譯成機器語言,計算機才能夠識別並執行。顯然,如果BIOS是匯編語言的話,沒有編譯的過程,是不能執行的。

⑻ 問BIOS文件用什麼反編譯,來看它的源程序

CBROM應該是修改BIOS等最好用的工具。

先分解出相應的部分後,再用匯編程序進行反匯編。

給你一些操作實例:

CBROM BIOS文件名 /EPA ***.EPA 更新能源之星圖標(用於只支持EPA格式的4.5X)
CBROM BIOS文件名 /EPA ***.BMP 更新能源之星圖標(用於只支持BMP格式的4.6X-6.X)
CBROM BIOS文件名 /EPA1-7 ***.BMP 部分主板支持多個更換能源之星圖標功能
CBROM BIOS文件名 /LOGO ***.BMP 更新全屏畫面用法(用於只支持BMP格式的640X480的圖片文件)
CBROM BIOS文件名 /LOGO1-7 ***.BMP 部分主板支持多個更換全屏畫面功能
CBROM BIOS文件名 /ISA STDE.BIN 使你的主板擁有和捷波恢復精靈一樣的功能
CBROM BIOS文件名 /ISA BIOS-10.BIN 使你的主板擁有承啟主板的GHOST功能
CBROM BIOS文件名 /PCI PXE.LOM 下載 網卡BOOTROM 啟動晶元 PXE 代碼,寫進主板的BIOS將PXE啟動代碼寫到 BIOS 中去,用做無盤啟動工作站
CBROM BIOS文件名 /VSA BIOS文件名 更新防毒模塊
CBROM BIOS文件名 /AWDFLASH AWDFLASH.EXE 使你的主板擁有自刷新工能(啟動時按ALT+F2)
CBROM BIOS文件名 /MIB 文本文件名 在支持MENU IN BIOS的主板加入文本信息(加入後,在BIOS SETUP里按F5或F9)
CBROM BIOS文件名 /YGROUP AWARDEYT.ROM 更換 YGROUP組
CBROM BIOS文件名 /XGROUP AWARDEXT.ROM 更換 XGROUP組
CBROM BIOS文件名 /GROUP _EN_CODE.BIN 寫入英文顯示代碼
CBROM BIOS文件名 /GROUP _GR_CODE.BIN 寫入繁體中文代碼
CBROM BIOS文件名 /GROUP _B5_CODE.BIN 寫入德語代碼
CBROM BIOS文件名 /FNT1 FONT1.AWD 寫入字型檔
移出某項內容:
在以上各參數的基礎上(CBROM BIOS文件名 /ISA)加入EXTRACT參數,則為移出BIOS中的新功能。各參數、BIOS文件不同,移出的內容也不相同。
注意:移出的文件最好用BIOS文件中的原文件名。否則可能移植到BIOS中,可能無法使用。
刪除某項內容:
如你不想用BIOS中的某個文件,可以在以上參數的基礎上(CBROM BIOS文件名 /ISA)加入RELESAE參數,則為刪除對應的項目。
必須在純DOS下面才能使用這個命令
這個命令只是修改BIOS文件
修改好後在通過AWFLASH或AFDOS命令把BIOS文件刷進BIOS裡面去

熱點內容
sql存儲過程命令 發布:2025-05-16 13:17:54 瀏覽:145
用紙做解壓小玩具西瓜 發布:2025-05-16 13:04:09 瀏覽:935
區域網xp無法訪問win7 發布:2025-05-16 13:03:58 瀏覽:942
油卡如何修改密碼 發布:2025-05-16 13:00:35 瀏覽:901
安卓手機如何拼照片 發布:2025-05-16 12:58:23 瀏覽:374
深入淺出python 發布:2025-05-16 12:56:52 瀏覽:655
國二c語言vc2010怎麼編譯運行 發布:2025-05-16 12:53:49 瀏覽:424
華為熱點哪裡看密碼 發布:2025-05-16 12:53:44 瀏覽:515
新手如何用java寫安卓app 發布:2025-05-16 12:53:07 瀏覽:402
虛榮掛腳本 發布:2025-05-16 12:50:44 瀏覽:480