在做逆向工作时发现一段奇怪的汇编指令:
lea edi,ebp+0x10;
or ecx, 0xFFFFFFFF;
xor eax, eax;
repne scasb;
not ecx;
dec ecx;
首先edi存储了一个C风格字符串的首地址 ecx=0xFFFFFFFF
eax=0
repne scasb; not ecx; dec ecx;指令运行完之后,ecx存储了该C风格字符串的长度。
实际情况看下面这张图:
not ecx指令执行后,这时的ecx值是字符串长度+字符串结束标志长度1
在这之后也会常跟上一个指令sub edi ecx,让edi重新指向字符创起始位置