2 軟體斷點

2022-09-06 20:54:19 字數 999 閱讀 9274

一般斷點要滿足的3個要求:

1. 執行到指定位址時可掛起程式,此時能提供環境資料給使用者,並等待使用者操作或命令。

2. 當使用者希望繼續執行時,能像正常程式一樣繼續執行。

3. 當再次執行到斷點時,還能像步驟

1一樣掛起程式。

例如用int3,

sti,

cli等指令替換原機器碼,都能實現斷點效果。

od的斷點把指定位址的機器指令替換為

cc,普通單步指令停下的位址,其機器碼不是cc。

使用者設定的斷點儲存在斷點資訊表中,表中儲存位址和原機器碼。當發生異常時比較位址是否存在於表中,存在則偵錯程式接管斷點,否則交給程式處理。

ntdll.dll中有一條

int3

指令,稱為系統斷點,提示我們馬上要到

entry point

了,使用者可以做準備工作了。

int3專用於使用者和除錯服務互動,程序內發生的

int3

異常如果未處理,程式最終會崩潰,如果附加了偵錯程式,且偵錯程式的處理態度是

dbg_continue

,則此int3

指令執行完畢,繼續下一條指令。

名稱粉碎規則(編譯後檢視

obj檔案):

//_foo1 _字首

extern "c" int __cdecl foo1(int a, char b) {

return 0;

//_foo2@8 _字首

+ @所有引數位元組數

extern "c" int __stdcall foo2(int a, char b) {

return 0;

//@foo3@8 @字首

+ @所有引數位元組數

extern "c" int __fastcall foo3(int a, char b) {

return 0;

硬體斷點和軟體斷點

硬體斷點和軟體斷點 在嵌入式開發 經常用到 jtag 器。jtag 器可以滿足嵌入式程式除錯的基本要求 斷點設定 單步除錯 記憶體編輯 變數 暫存器觀測等。而斷點設定是 jtag 器最基本的除錯功能。使用者需要系統在設定斷點處停下來後再進行除錯。斷點根據原理和用途不同又分為幾個不同的種類。斷點可分為...

硬體斷點和軟體斷點 整理

既然軟體斷點是要往某個位址寫入斷點指令的,那麼最起碼該位址應該是可寫的吧?大多數時候,我們的程式是會被載入到記憶體 ram 中執行的,ram是可讀可寫,這時候軟體斷電就是有效的 2 但是,對於某些比較重要的程式,可能會直接在flash中執行,並且flash對使用者可能是唯讀的,這時候軟體斷點就沒有用...

OD筆記2 記憶體斷點與硬體斷點

精闢解釋 來自看雪論壇 記憶體訪問斷點是利用 virtualprotect 來把該記憶體位址所在的記憶體頁 大小為4096位元組 設定為不可讀 不可寫 不可執行 所以當訪問該記憶體的時候會產生乙個訪問異常 從而在異常處理函式中實現記憶體訪問斷點的操作 硬體斷點是利用 cpu自帶的除錯暫存器 dr 產...