汇编语言求字符串长度(32位)

汇编语言求字符串长度,逆向中经常会出现,标记一下:


; scas(说明是32位处理器)   
;求字符串长度,结果存放在 eax 中

mov edx,edi
mov edi,eax
mov ecx,-0x1      ;  将ecx 赋值为FFFFFFFF
 xor al,al
repne scas byte ptr es:[edi]     ;使用 es:[edi] 中的内容与 al 相比,不等于就一直比下去。比较一次后 edi 加一。
mov eax,-0x2      ;将 eax  赋值为FFFFFFFE; ecx 多减了一次(结尾的 0),所以这里eax 比 ecx原始值小1
sub eax,ecx                              ;  求出字符串长度,结果存放在 eax 中  
mov edi,edx
retn

posted @ 2018-04-12 23:21  ay-a  阅读(1697)  评论(0编辑  收藏  举报