能力值:
( LV3,RANK:20 )
|
-
-
2 楼
[]是取内容,取到的内容在做lea地址操作给ecx
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
00401050 push 14h 内存填充字节数。
00401052 push 0要填充的内容
00401054 lea ecx,[ebp-1Ch] /把ebp-1ch给Ecx
00401057 push ecx也就是var的地址
00401058 call memset (00401240)0040105D add esp,0Ch平衡栈
12: printf("%s",var);call的代码memset:
00401240 mov edx,dword ptr [esp+0Ch] edx=sizeof(char)*20
00401244 mov ecx,dword ptr [esp+4] ecx=&val
00401248 test edx,edx如果填充字节数量为0就直接跳到函数结尾
0040124A je toend (00401293)0040124C xor eax,eax
0040124E mov al,byte ptr [esp+8] 填充的内容,al=0
00401252 push edi
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
lea ecx,[ebp-1Ch]
我觉得LZ应该是不知道lea的用法吧·····
[ebp-1CH] 就是var
lea就是 取var的地址 也就是 ebp - 1ch
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
楼主自己跟进用调试器跟进源码看吧!这样有助于理解
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
[QUOTE=天下tianxia;1060817]lea ecx,[ebp-1Ch]
我觉得LZ应该是不知道lea的用法吧·····
[ebp-1CH] 就是var
lea就是 取var的地址 也就是 ebp - 1ch[/QUOTE]
为什么EBP-1CH就是VAR的地址呢、?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢的你建议,我会努力的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
[QUOTE=邋遢鬼;1060813]00401050 push 14h 内存填充字节数。
00401052 push 0要填充的内容
00401054 lea ecx,[ebp-1Ch] /把ebp-1ch给Ecx
00401057 push ecx也就...[/QUOTE]
你太狠了。。。谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
11: memset(&var,0,(sizeof(char))*20);
00401050 push 14h ;第三个参数入栈 14h 十进制数20
00401052 push 0 ;第二个参数入栈 0
00401054 lea ecx,[ebp-1Ch] ;第一个参数 var 由于ECX=ebp-1ch 赋值语句非法 所以用LEA
00401057 push ecx ;第一个参数入栈
00401058 call memset (00401240) ;调用memset
0040105D add esp,0Ch ;三个参数12个字节 堆栈平衡
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢
|
|
|