阅读:1574回复:2
《天方夜读》中,又有个地方不明白,想问一问。。。
第19页,下面。
00401001 mov ecx,dword ptr [esp+10h] D ecx = p3 00401005 mov edx,dword ptr [esp+8] D edx = p1 ;问题 start 0040100A mov ebx,dword ptr [esp+4] D ebx = p1 ;问题 end 0040100F mov esi,dword ptr [esp+14h] D esi = p2 00401014 xor eax,eax C 00401020 mov edi,dword ptr [esi+8] D edi = p2[2] 因为push了两次,esp+8才相当于以前的esp值,现在的esp+4 = (esp+8)-4,好像是局部变量,或者是被push的ecx值,这个地方没有搞懂,不知道是怎么回事。。。 |
|
沙发#
发布于:2007-10-29 20:33
esp+xxx或者ebp-xxx一般就是局部变量。ebp+xxx一般为参数或者返回地址。没有明白你不明白在哪里啊?!
|
|
|
板凳#
发布于:2007-10-30 10:13
origin_esp是没有进行push操作的esp值,
00401005 mov edx,dword ptr [esp+8] D edx = p1 这行之前只push了一次,esp+8=esp+4+4=origin_esp+4,[esp+8]是第一个参数p1, 0040100A mov ebx,dword ptr [esp+4] D ebx = p1, 这行之前push了两次,esp+4=esp+8-4=origin_esp-4,[esp+4]就不能是参数p1了, 如果[esp+4]是局部变量的话,[esp+4]是不是等于push ecx中ecx的值。 |
|