1. 程式人生 > >asm基礎——vs下的反彙編

asm基礎——vs下的反彙編

反彙編

對於下面的程式碼:


為了反彙編,首先需要將程式碼進行除錯執行,這時需要先打點:


之後啟動除錯:


除錯過程中,可以選擇除錯->視窗->反彙編,進行程式碼的反彙編:


反彙編的結果如下:


上述反彙編程式碼是在Debug版本下得到的,即:


其中001313BE(16進位制,沒有加符號說明)是存放程式碼的地址,而138154h(16進位制,有加符號h說明)是全域性變數gi的地址。為了確定這一點,可以通過監視視窗檢視:


具體視窗中輸入輸入名稱&gi,可以觀察到:


這是變數的值,至於程式碼存放的位置,通過直接檢視1313BE這個記憶體地址來檢視:


在記憶體監視視窗中檢視到的值如下:


由於存放在記憶體中的是機器碼,沒法直接看出來mov指令是否在1313BE這個問題,所以先要把mov指令翻譯成對應的機器碼。具體做法是在程式碼窗體中右鍵,並選擇“顯示程式碼位元組”:


之後得到mov對應的機器碼如下:


剛好與記憶體中的資料一致!