不用strlen获取字符串长度的汇编指令
程序员文章站
2024-03-23 22:10:52
...
在做逆向工作时发现一段奇怪的汇编指令:
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重新指向字符创起始位置
上一篇: Java中的输入输出流(一)
下一篇: 总结:c的输入输出函数