OllyDbg – Debugging Without Source Code
何熙明(R96921029)、張凱翔(R97921030)、尤佳良(R97921059)
摘要
OllyDbg 是一套 Windows 環境下的除錯器 (debugger),除了一般 debugger
有的 step、breakpoint、watch 等功能以外,更具有二進位碼分析 (binary code
analysis) 的能力。本報告介紹 OllyDbg 的特色、與同類軟體之比較,再以四個
實例示範如何使用它在沒有原始碼的情況下修正軟體裡的 bug。
1. 前言
當我們撰寫的程式執行結果不正確時,只要用我們熟知的各種 debug 方法
找出原始碼中錯誤之處,將其改正後重新編譯即可。但如果出問題的是別人的軟
體,因為種種原因無法聯繫開發者要求修正,偏偏又找不到合適的替代軟體,是
否就只能束手無策了?OllyDbg 是由 Oleh Yuschuk 開發的一套 Windows 環境
下的 debugger,專門用在只有 executable 沒有 source 的場合。當然,在這種情
況下我們只能看到 disassembly,要了解程式的邏輯、流程相對會比較困難,但
靠著 OllyDbg 各項功能的幫助,加上一些背景知識,仍然可以完成 debug 工作。
2. 軟體特色
OllyDbg 目前最新的版本是 2.0 beta1 (Dec. 2008),穩定版本是 1.10。其具
有如下的多項特色︰
1. 易於使用的直覺式圖形使用者介面
比起其他具有類似功能的 debugger (例如 SoftICE、WinDbg) 相比,OllyDbg
的使用者介面友善多了,不需花費太多時間學習如何操作 (圖 1)。
2. 具有二進位碼分析能力
OllyDbg 會對 disassemble 的結果進行分析,自動辨識出 prodecures、
loops、API calls、switches、tables、constants、strings 等,並將其清楚地標示出
來,使我們在面對動輒數十萬行、上百萬行的 disassembly 時,不至於完全看不
出頭緒。在 2.0 版中作者又增強了這項特色,使 OllyDbg 能辨認更複雜的函數
呼叫 (圖 2、3)。
评论0