this指標在彙編中被覆蓋

2021-07-29 21:41:16 字數 501 閱讀 7255

昨天遇到個坑,在除錯乙個程式的時候,在乙個類物件的函式處理過程中,this指標被修改。導致程式崩潰。

原來在這個函式內部呼叫了乙個dll的api,這個api的引數在this前push進棧,但這個dll的api修改這個引數時越界了,把this也覆蓋了。導致this指標出錯。

大概是這樣:

引數被寫前            在api中引數被修改,覆蓋了this

***x                         aaaa

***x  ----->              aaaa

this                           aaaa

ebp                          ebp

因此,絕對是dll有問題。或者是標頭檔案宣告的引數結構太短了。

果然檢視了以下是標頭檔案跟dll的版本不對應,新版的標頭檔案引數結構變長了。修改後沒問題了。

以後利用第三方dll注意版本!!!

反彙編 函式指標

函式指標的定義 返回型別 呼叫約定 變數名 引數列表 例如 int cdecl myfun int,int 一般都用來呼叫非本身程式提供的函式來進行使用 如下 includeint main 反彙編如下 5 int cdecl myfun int,int 6 7 int i 10 00401028 ...

如何保證類的物件只在stack中被定義?

我們要從stack 堆 和heap 棧 的不同來看 在stack中系統自動呼叫析構函式對物件的記憶體進行釋放,而在heap中,只有當程式結束或者我們用delete時,系統才會呼叫析構函式釋放物件所佔的記憶體。重點 我們只要把釋放記憶體的方式限定住了,也就限制住了物件被定義的位置。示例如下 inclu...

傳奇遊戲在開服中被攻擊了怎麼處理?

傳奇遊戲在開服中被攻擊了怎麼處理?遊戲還開著區呢,被攻擊會很影響開區的效果的,怎麼辦?遊戲伺服器不管是個人的還是企業的,被攻擊都是很常見的,在所難免的。特別是遊戲新上線時,都要承受外來壓力,玩家突然猛增,被攻擊等等。如果承受不住可能會直接宣布遊戲倒閉。這裡 超級科技跟大家 說說遊戲伺服器為什麼老被攻...