Ollydebug界面上有四個視窗,分别是
1、反彙編視窗:位址,機器碼,反彙編代碼,注釋
2、寄存器視窗
3、資料視窗
4、堆棧視窗
L:log M:memory W:window H:Handle C:cpu K:堆棧
調試:
F2設定删除斷點
F7,類似VC中的F10,進入代碼
F8:類似F11
F9:運作調試程式,直到斷點處
寄存器:
ESP:指向堆棧最頂端的位址
EIP:指向目前将要執行的指令
(可以通過右鍵modify修改這個值,然後在commanderbar中顯示AL AH BX等)
标志寄存器:
O:溢出标志,可以在反彙編視窗右鍵assemble修改指令,在寄存器視窗修改寄存器的值。
A:輔助進位标志
P:奇偶标志,1的總數為偶數,p置位0。eg;1100,1010,此時p為0。
Z:零标志,當結果為0時,被置位。為1
S:符号标志,當運算結果為負,設定成1
C:進位标志,無符号進位
PUSHAD指令把所有通用寄存器的内容按一定順序壓入到堆棧中,PUSHAD也就相當于
’PUSH EAX,PUSH ECX,PUSH EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI, PUSH EDI’。
POPAD
該指令與PUSHAD正好相反,它從堆棧中取值,并将它們放到相應的寄存器中。
POPAD等價于“POP EDI,POP ESI,POP ESP,POP ESP,POP EBX,POP EDX,POP ECX,POP EAX”。
PUSHAD-POPAD指令經常被使用,例如:某個時刻你需要儲存所有寄存器的内容,然後修改寄存器的值,或者進行堆棧的相關操作,然後使用POPAD恢複它們原來的狀态。