部分参考:https://blog.youkuaiyun.com/meanong/article/details/81484288
好久没写文章了,之前在学习sqli-labs天书,也学了一些基础知识,也放松了挺长时间,现在回过头来学习些新东西。
之后会多写一点自己的理解,而不是之前一样抄书了。
最近重新学习一下C和汇编,看的是b站滴水的视频,突然想分析一下代码,虽然不自量力,但还是要做的。
汇编代码
00401070 mov ecx,dword ptr [esp+4] //取变量
00401074 test ecx,3 //查看是否4字节对齐
0040107A je main_loop (00401090)
str_misaligned:
0040107C mov al,byte ptr [ecx]
0040107E inc ecx
0040107F test al,al
00401081 je byte_3 (004010c3)
00401083 test ecx,3
00401089 jne str_misaligned (0040107c)
0040108B add eax,0
main_loop:
00401090 mov eax,dword ptr [ecx] //取4字节字符
00401092 mov edx,7EFEFEFFh //二进制 0111 1110 1111 1110 1111 1110 1111 1111
00401097 add edx,eax //判断字节是否为0 如果低字节为0 必然产生进位
00401099