小華的部落格: 可以反組譯的 Debug 工具簡介~~~

搜尋此網誌

網頁

星期四, 11月 01, 2007

可以反組譯的 Debug 工具簡介~~~

ㄧ般Debug BIOS程式碼的時候會透過幾個反組譯工具或是Debug Tools來輔助,這邊大概就簡略說明一下我比較習慣的工具(可以反組譯程式碼及修改的工具):

1. BIOS Vendor 提供的Debug Tools
ㄧ般OEM/ODM BIOS工程師比較主要的Debug Tools,他的連線介面方式像目前最火紅的 USB2.0 cable 連線方式或是以前的1394 cable...etc.ㄧ般這種工具需要搭配BIOS Vendor的BIOS 程式碼來達成,也就是你會去使用某個"switch"來開關BIOS Code, 簡單的說就是當Switch = ON時,BIOS 的Build Tools在Compiler 你的BIOS Code時,會把Debug Tools需要用到的BIOS 程式碼拉進來一起Compiler,於是會影響到你的BIOS ROM Size的問題,因此ㄧ般我們會把ㄧ些不必要的程式碼先註解掉,以免當Debug code拉進來一起Compiler的時候造成BIOS Size爆掉(不夠用),至於"Switch"的設定則依照不同BIOS廠商就會有不同的開關方式,而建立的BIOS ROM 就是一個 Debug version,接著需要將這個BIOS燒入到主機板內,然後透過BIOS Vendor提供的Debug 軟體來做除錯的動作。

而這種架構下的Debug 方式稱為 Client(要被除錯的那塊主機板或系統) 與 Server(安裝了Debug 軟體的系統,一般就是你的工作機) 的關係,其原理簡單說就是 Client 會透過連線(USB/1394) 把ㄧ些資訊傳給Server上面的Debug 軟體,接著你就可以去做一些除錯的動作。

各家BIOS廠商的除錯工具都不同,但是方式大同小異,因此工具的學習只是基本的知識,重點還是在你對於整個系統架構的了解程度才能夠有效的針對問題解決。

2. Windows 附帶的Debug.com 以及Debug32.com
ㄧ般用來查看一些BIOS code留在系統記憶體的ㄧ些資訊(E0000~FFFFFh),這些資訊就像是DMI/PnP BIOS Struct / PCI IRQ Routing Table ...etc 或是查看一些OpROM 甚至是手動載入某個OpROM 到記憶體中並追蹤他或是修改ROM的時候可以用,其應用就看個人經驗而有不同的發揮,不過一般修改ROM還會搭配HEX Editor 直接修改機器碼就可了。

3. IDA Pro + Softice + Win32DASM + OllyDbg
這幾個工具都是針對Windows的一些問題去追蹤或是反組譯某些bin file或是破解程式時在使用,其應用範圍也是看個人經驗而有所不同,這邊只是簡單說明我個人習慣的一些工具。

4. Other
除了上面說的這些工具之外當然還會透過一些應用程式來幫忙,像是RU.EXE/SE.EXE/ACPIView.exe...etc,因為這些工具不能反組譯程式碼,所以我就不多加討論。

在這篇文章中,最主要是能將 BIOS 工作性質做一些基本說明,對於有心進入這個行業的朋友們了解,一個BIOS工程師基本上會做哪些事情以及你需要了解哪些工具,而上述的工具都是我個人習慣使用的工具,當然其他人也可能會跟我不一樣,因此希望能藉由這篇文章讓有興趣的朋友能有個方向。

沒有留言: