記兩次OD除錯的過程,OD下斷點無效的解決過程

2021-10-04 05:35:37 字數 1116 閱讀 1295

在使用od(ollydbg)的過程中,我們可以使用斷點開進行反彙編**的暫停執行,通常在除錯自己**的時候我們會使用搜尋expresion的方式來在特定**處下斷點,但是有時候我們成功在所謂有效的expression處下了斷點之後執行**,**卻沒有暫停,直接執行到程式結束。這是為什麼呢。

注:expression在這裡表示乙個可以被od檢測到的函式

這是因為我們的**在編譯的過程中,由於

在我們的**編譯之後,可執行檔案並沒有呼叫我們認為程式會呼叫的函式。

例1

程式a.c如下

#include

int a =1;

intmain

(void

)

使用mingw編譯

g++ -o0 a.c -o a.exe
正確姿勢:od中你必須使用對應的字符集下的函式才能成功對messagebox函式呼叫處下斷點,在gccg++中預設使用的是ascll字符集,你必須在messageboxa函式處下斷點才能成功暫停程式。

例2

程式b.c如下:

#include

void

test()

intmain

(void

)

使用mingw編譯

g++ -o0 b.c -o b.exe
正確姿勢:在編譯的過程中,雖然使用了-o0停用編譯優化,但是由於printf函式用的太簡單,編譯器還會有可能使用puts函式替換printf函式,此時在puts函式處下斷點才可以正確中斷程式。

spring下quartz啟動兩次的問題

最近正在做的專案,測試的時候發現定時排程任務會執行兩次,於是乎查資料呀,都說是tomcat配置問題,哥改了還是不行,後來無奈使用了乙個網上說的方法,將job中的方法使用同步,通過乙個靜態變數進行控制,配置如下 dosend false dodelete false 0 0 0 0 3 job如下 p...

記一次5000併發的除錯過程

為了滿足招標和使用者的需要,希望公司的基礎架構能支援5000併發,特此進行驗證和除錯。向兄弟部門借了兩台伺服器 每台8核cpu,48g記憶體 在兩台伺服器上安裝虛擬化平台exsi,每台上安裝4個linux7.0虛擬機器,總共8個linux7.0虛擬機器 a伺服器上的四台虛擬機器 aa1,aa2,aa...

記一次 連線已重置 的除錯過程

專案是來自edusoho的開源版本,經一同事多次修改,接手時個人中心打不開,無修改密碼功能等等,一步步解決了 說說除錯了很久的 連線已重置 最初這個問題只在使用者的伺服器出現,遂開始了坑自己的過程,用二分法刪除 輸出變數來除錯,最終找到了乙個公共方法,裡面呼叫了乙個系統方法,然後進行不下去了,兩個方...