「工欲善其事,必先利其器」。在進行軟體除錯或者逆向工程時,我們需要很多輔助工具,其中偵錯程式是最重要的工具之一。
根據除錯物件偵錯程式分類為使用者態和核心態。使用者態偵錯程式只能除錯環3(ring3)許可權的應用程式,大多數應用程式均屬於此類程式。核心態偵錯程式能除錯環0(ring0)許可權的應用程式,驅動和作業系統核心均屬於此類程式,當然環3許可權的程式也可以除錯,只是不方便。
目前常見的使用者態偵錯程式為:ollydbg、windbg、gdb和ide自身整合的偵錯程式。核心態偵錯程式為:softice、syserdbg、windbg、gdb。
根據偵錯程式的實現偵錯程式分類為硬體支援和系統支援。硬體支援偵錯程式是通過硬體支援來實現除錯功能,而系統支援偵錯程式是通過作業系統的支援(系統api)來提供除錯功能。對於硬體支援偵錯程式而言,在系統缺陷或者系統被篡改等原因下導致系統支援偵錯程式無法正常工作時,硬體支援偵錯程式仍然能很好的完成除錯工作。另外對於逆向工程來說常見的反除錯手段都是基於作業系統支援來進行的,所以硬體支援偵錯程式一般不容易被反除錯手段發現,從而具備很好的隱秘性。但硬體支援偵錯程式的缺點是受硬體支援影響,一般在功能實現方面沒系統支援偵錯程式強大。
根據除錯方法也可以劃分為靜態除錯和動態除錯。靜態偵錯程式包含反彙編器功能是通過對程式檔案進行反編譯來進行分析除錯。動態除錯是通過對執行時的程式進行跟蹤從而進行分析除錯。靜態除錯一般運用於逆向工程,通常用來逆向分析程式結構和程式演算法,比較有名的靜態偵錯程式莫過於ida,還有一些功能簡單的反彙編器如w32dsm。對於大多數軟體開發人員,他們除錯程式時都是動態除錯,這樣能更直觀有效的排錯。但對於逆向工程來說,動態除錯也是必不可少的,從龐大的應用程式中找到關鍵**並不是一件容易的事,通過動態除錯通常可以很快的定位到關鍵**。比較有名的動態偵錯程式則是ollydbg。
另外,windows平台下softice早已停止開發,ollydbg是逆向工程的首選,windbg功能強大適合除錯驅動和專業測試。linux平台下gdb對於各種應用都是比較好的選擇。immunitydbg偵錯程式其實是對ollydbg的二次開發。市面上基於vt技術(虛擬化技術)的偵錯程式隸屬於硬體支援偵錯程式,這是比較前沿的技術。隨著硬體虛擬化的普及,開發基於硬體的偵錯程式顯得更為容易,很多研究作業系統核心和安全方面的高手,出於各種目的,都在嘗試開發基於vt技術的偵錯程式。
python的偵錯程式 Python 偵錯程式入門
python 生態系統包含豐富的工具和庫,可以讓開發人員更加舒適。例如,我們之前已經介紹了如何使用互動式 shell 增強 python。本文重點介紹另一種可以節省時間並提高 python 技能的工具 python 偵錯程式。python 偵錯程式 python 標準庫提供了乙個名為 pdb 的偵錯...
GDB偵錯程式
偵錯程式gdb 一 啟動和退出gdb gdb除錯的物件是可執行檔案,而不是程式的源 如果要使乙個可執行檔案可以被gdb除錯,那麼在使用編譯器gcc編譯程式時需要加入 g選項。gdb除錯乙個程式的命令格式是 gdb 程式檔名 也可以在linux提示符下,直接輸入gdb,然後使用file命令裝入要除錯的...
GDB Linux偵錯程式
gdb偵錯程式 乙個可以通過自身的執行觀察其他程式內部執 況的程式 可以除錯由c c obj c以及其他許多語言編寫的程式 開始除錯 在編譯命令中加入選項 g,例如debug 乙個名為 cprogram 的c 程式 g g cprogram.cpp o cprogram 接下來輸入gdb命令即可進入...