回覆列表
  • 1 # pzyyo24296

    簡單介紹下debug檢視記憶體中的機器碼,已經檢視彙編指令的方法。-r 引數用來檢視CPU中暫存器的值,以及改變暫存器的值。至於那些神馬AX,BX,CX,DX的都不用說了,CS跟IP更不用說了,指向了要執行的下一條指令。可以用-r cs或者-r ip來改變它們的值。如圖:這樣我們就可以讓CS:IP指向我們希望的指向記憶體地址,從而可能執行我們預先在該地址存放好的程式碼。-D命令:用來檢視記憶體中的值。比如:如圖:最左邊的是記憶體的地址,用基地址:偏移量的方式給出,中間存放的是記憶體中的機器碼,一行剛好15個位元組,而最右邊則是對這些資料敵對應的可顯示的ASCII字元,對於沒有的,則用.代替。所以如果想看一下,右邊輸出hello之類的 東西,則可以向指令裡面寫如這些字元的ASCII碼。-E命令:改寫記憶體中的內容。上面已經說到了,下面我們來試試,用E改變CS:IP裡面存放的指令。如圖:使用" ‘的格式就可以向裡面輸入字元了,右邊出現了字元hello,所以我們可以認為中間的資料就是對應字元的ASCII碼,我們之所以看到h是68,那是因為這是十六進位制的資料,h真正的ASCII碼應該是6*16+8=104,所以是吻合的。比如我們像記憶體裡面寫入:61(也就是6*16=97)而0到9幾個數字ASCII碼的十六機制剛好是3x,也就是48+x.這點必須的搞清楚。好,搞了這麼長時間的E命令,我們在看看U命令,它用來檢視機器碼對應的彙編程式碼。比如:可以看到十六進位制的61對應的彙編還是61?所以我們可以用-e寫入機器碼,然後用-u來檢視彙編指令。-A:以彙編的形式向記憶體寫入指令。比如:還有一個命令就是-t,也就是執行,不多說了。

  • 中秋節和大豐收的關聯?
  • 解一元一次方程,一,合併同類項與移項用什麼方法用代入可知道自己算的對不對?