repe是一个串操作前缀,它重复串操作指令,每重复一次ECX的值就减一
一直到CX为0或ZF为0时停止。
cmpsb是字符串比较指令,把ESI指向的数据与EDI指向的数一个一个的进行比较。
当repe cmpsb配合使用时就是字符串比较啦,当相同时继续比较,不同时不比较
mov edi,[ebp+08] 将你输入的密码的地址付给EDI
mov esi,[ebp+0c] 真正的地址付给ESI
mov ecx,[ebp+10] 将他们的长度附给ECX
repe cmpsb 进行比较
jecxz 00401260 如果CX等于0,即密码正确跳
mov eax,00 密码不正确时,会EAX为0
再补充一下吧:
cmpsb是将ESI指向的字节与EDI指向的字节进行减操作
如果两个字符相等,即ZF为1,当不相等时ZF为0
而REPE停止重复的条件是ZF为0或CX为0,说明啦,当ZF为0时
肯定就是字串不同啦,当CX为0时,表明字符串比对成功没有出现
不相等的情况。
不过我觉得这样比不太好,如果你的密码打了8位
而真正的密码4位,如果ECX是4的话,他真会比对4位,正好你前4位
打对啦,那输入的密码也是正确的啦。如果他的ECX取得是你输入的密码
的个数,就没问题啦。不知道具体程序是什么样的,乱评一下,别介意。
一直到CX为0或ZF为0时停止。
cmpsb是字符串比较指令,把ESI指向的数据与EDI指向的数一个一个的进行比较。
当repe cmpsb配合使用时就是字符串比较啦,当相同时继续比较,不同时不比较
mov edi,[ebp+08] 将你输入的密码的地址付给EDI
mov esi,[ebp+0c] 真正的地址付给ESI
mov ecx,[ebp+10] 将他们的长度附给ECX
repe cmpsb 进行比较
jecxz 00401260 如果CX等于0,即密码正确跳
mov eax,00 密码不正确时,会EAX为0
再补充一下吧:
cmpsb是将ESI指向的字节与EDI指向的字节进行减操作
如果两个字符相等,即ZF为1,当不相等时ZF为0
而REPE停止重复的条件是ZF为0或CX为0,说明啦,当ZF为0时
肯定就是字串不同啦,当CX为0时,表明字符串比对成功没有出现
不相等的情况。
不过我觉得这样比不太好,如果你的密码打了8位
而真正的密码4位,如果ECX是4的话,他真会比对4位,正好你前4位
打对啦,那输入的密码也是正确的啦。如果他的ECX取得是你输入的密码
的个数,就没问题啦。不知道具体程序是什么样的,乱评一下,别介意。