OllyDbg---寄存器

寄存器

寄存器的概念和作用

  • 寄存器是CPU内部的高速存储单元,访问速度比常规内存快很多。

  • 处理器在执行程序时,需要一个助手,当执行一条指令时,比如将两个内存单元中存放的内容相加,处理器需要先把其中一个内容放入到寄存器中,然后在把另一个内容放入,这就是使用寄存器的一个例子。

  • OD寄存器窗口中显示的寄存器有EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI,EIP,这些寄存器都被成为32位寄存器,均以十六进制显示,每一位可以被设为0或1。

    • ESP:指向的是堆栈最顶端的地址

    • EIP:指向的是下一条要执行命令的地址

    • EAX:AX是EAX的一部分,是一个16位寄存器,是EAX的后4位数字,AX还可以分为AL和AH。

    • EAX, EBX, ECX, EDX都可以这样分割,修改时,右键点击modify。

    • 但EIP是一个例外,它指向下一条将要执行的指令,改变其值时,需要在反汇编窗口中选择新的指令起始点,右键选择New origin here。

标志寄存器

  • 标志分为C, P, A, Z, S, T, D, O,标志寄存器只能是0或1。

溢出标志O

  • 当操作改变了符号位、返回错误值时被设置。该标志的目的是当指令的结果超过它能够存取的最大值时,将被设置为1。

辅助进位标志A

  • 完成操作后,用其他的某种形式对其进行记录。

奇偶标志P

  • 如果指令的结果用二进制表示,该二进制数中的1的总数为偶数时,P标志会被设置为1。

零标志Z

  • 当运算产生的结果为0时,该标志会被设置为1。

符号标志S

  • 当运算产生结果为负时,该标志会被设置为1。

标志进位表示C

  • 无符号运算时,在超过最大数值时,该标志位被设置为1。
上一篇:第19章:寻找UPack OEP


下一篇:Delphi SysUtils-SameText 对比两个字符串是否相等