当先锋百科网

首页 1 2 3 4 5 6 7

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恢复它们原来的状态。