OllyDbg笔记-对标志寄存器中ZF的理解(逆向方面)

OllyDbg笔记-对标志寄存器中ZF的理解(逆向方面)_第1张图片

这里主要是第6位的ZF。

zf (Zero Flag) 是零标志位,在第6位;它记录相关指令执行后,其结果是否为0,如果为0,那么zf = 1;否则zf = 0

如下面的这个:

OllyDbg笔记-对标志寄存器中ZF的理解(逆向方面)_第2张图片

这里要介绍两条命令:

Jz=jump if zero (结果为0则设置ZF零标志为1,跳转)
Jnz=jump if not zero

Z这个标志位在程序判断的时候极为重要:

比如下面的代码:


void Widget::btnClicked()
{
    QString passwd = ui->lineEdit->text();

    if(isOK(passwd)){


        QMessageBox::information(this, "提示", "成功");
    }
    else{

        QMessageBox::information(this, "提示", "失败");
    }
}

bool Widget::isOK(QString str)
{
    if(str == "www.it1995.cn")
        return true;

    return false;
}

这里就是根据其JZ,进行跳转。

最后一个知识点是TEST

Test的一个非常普遍的用法是用来测试一方寄存器是否为空:

test ecx, ecx 
jz somewhere

如果ecx为零,设置ZF零标志为1,Jz跳转

 

你可能感兴趣的:(OllyDbg,反汇编,汇编)