国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

剖析賦值語句的機器碼 - 調(diào)試程序

2023-02-23 16:27 作者:程序員老秦  | 我要投稿

調(diào)試程序:

int?gi;

int?main()

{

gi?= 0xffffffff;

return?0;

}

在第4行打斷點


調(diào)試 ---> 窗口 ---> 反匯編,或者是alt + 8快捷鍵;


此時此刻可以看到反匯編代碼,點擊右鍵,把紅色方框的全部選擇,就可以看到C語言中無法看到的信息了。


接著我們來分析一下關(guān)鍵的代碼和符號,如圖所示的1 2 3。


此時此刻應(yīng)該有3個問題:

1、C7 05代表什么意思?

2、內(nèi)存地址00EFA138h到底代表什么意思?它真的是變量gi的地址值嗎?

3、Mov指令的地址是什么?是不是這個00EF1728呢?


好的我們先回答第一個問題 C7 05 其實就是mov指令的機器碼。這個大家應(yīng)該都知道。


接著我們先來研究第三個問題,0x00EF1728到底是不是mov指令的地址,我們按照如下步驟。


調(diào)試 ---> 內(nèi)存 ---> 內(nèi)存1


把0x00EF1728拷貝到該窗口,從下面的窗口我們就看到了確確實實看到了C7 05,

所以驗證了我們的想法。


接著我們再回過頭來看第2個問題,內(nèi)存地址00EFA138h到底代表什么意思?

首先按照下面步驟:1 調(diào)試 ---》 2 監(jiān)視---》 3 監(jiān)視1


然后把gi變量和&gi拷貝到窗口,大家可以看到,0X00EFA138h確確實實是變量gi的地址值。


我們按F11逐語句繼續(xù)運行,可以看到gi的值變成了0Xffffffff,驗證了我們的猜想。


我們還可以從另外的角度來佐證我們的猜想;

重新運行程序,觸發(fā)斷點;

我們還是把內(nèi)存監(jiān)控的窗口調(diào)出來,在程序沒有運行到gi = 0xffffffff之前;

我們就修改內(nèi)存里面的值,具體修改方法如下,右鍵-->編輯值。


大家可以看到值變?yōu)榱思t色這塊的00000001,這是我手動修改的。


接著按下F11,發(fā)現(xiàn)了,我改了內(nèi)存里面的值,就算運行了gi = 0xffffffff;

我們監(jiān)控的gi的值卻變?yōu)榱?,而不是0xffffffff;

所以再一次驗證了我們的猜想。


這個地址確實是 gi的地址。


總結(jié):

1 、C/C++的調(diào)試環(huán)境,確實比較好玩,尤其是調(diào)試環(huán)境的反匯編、監(jiān)視窗口、內(nèi)存窗口、單步、斷點、mov 指令、全局變量賦值的反匯編、對指令建立了形象的認知,并直接構(gòu)建了指令,直接改變了內(nèi)存的值。

2、 調(diào)試學(xué)習(xí)過程就是我們探索式學(xué)習(xí)很好的例子,分為由淺及深的三階段∶深入剖析 → 部分修改 → 全新構(gòu)建。我們要善于將自己的探索過程分解為:假設(shè) ---》 實證 ---》 推進,這樣子的過程。通過這樣子的鍛煉,我們的分析能力會更上一層樓。


剖析賦值語句的機器碼 - 調(diào)試程序的評論 (共 條)

分享到微博請遵守國家法律
木里| 乃东县| 奇台县| 大田县| 景谷| 科技| 临沭县| 丰台区| 余庆县| 凤凰县| 宁陕县| 景德镇市| 高碑店市| 鹤峰县| 玛纳斯县| 马尔康县| 贡山| 望奎县| 平塘县| 大丰市| 原平市| 南溪县| 张家川| 泽普县| 且末县| 保亭| 烟台市| 砚山县| 萨迦县| 英吉沙县| 林芝县| 公主岭市| 涟源市| 监利县| 渑池县| 江门市| 色达县| 嘉鱼县| 朝阳区| 来宾市| 永善县|