首页
社区
课程
招聘
[求助][求助]帮注释一段反汇编代码
发表于: 2012-4-5 15:45 5873

[求助][求助]帮注释一段反汇编代码

2012-4-5 15:45
5873
小弟有些看不明白,请帮注释一下

11:       memset(&var,0,(sizeof(char))*20);
00401050   push        14h
00401052   push        0
00401054   lea         ecx,[ebp-1Ch]  //这里啥意思?取栈顶?
00401057   push        ecx
00401058   call        memset (00401240)
0040105D   add         esp,0Ch
12:       printf("%s",var);

call的代码

memset:
00401240   mov         edx,dword ptr [esp+0Ch]
00401244   mov         ecx,dword ptr [esp+4]
00401248   test        edx,edx
0040124A   je          toend (00401293)
0040124C   xor         eax,eax
0040124E   mov         al,byte ptr [esp+8]
00401252   push        edi




懂行的帮忙每行注释一下啊

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
[]是取内容,取到的内容在做lea地址操作给ecx
2012-4-5 15:53
0
雪    币: 31
活跃值: (48)
能力值: ( 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
2012-4-5 16:44
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
lea         ecx,[ebp-1Ch]
我觉得LZ应该是不知道lea的用法吧·····
[ebp-1CH] 就是var
lea就是 取var的地址 也就是 ebp - 1ch
2012-4-5 16:57
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
楼主自己跟进用调试器跟进源码看吧!这样有助于理解
2012-4-5 17:09
0
雪    币: 163
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=天下tianxia;1060817]lea         ecx,[ebp-1Ch]
我觉得LZ应该是不知道lea的用法吧·····
[ebp-1CH] 就是var
lea就是 取var的地址 也就是 ebp - 1ch[/QUOTE]

为什么EBP-1CH就是VAR的地址呢、?
2012-4-5 19:06
0
雪    币: 163
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢的你建议,我会努力的
2012-4-5 19:07
0
雪    币: 163
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=邋遢鬼;1060813]00401050   push        14h 内存填充字节数。
00401052   push        0要填充的内容
00401054   lea         ecx,[ebp-1Ch]  /把ebp-1ch给Ecx
00401057   push        ecx也就...[/QUOTE]

你太狠了。。。谢谢
2012-4-5 19:08
0
雪    币: 793
活跃值: (10)
能力值: ( 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个字节 堆栈平衡
2012-4-5 21:30
0
雪    币: 163
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢
2012-4-7 22:50
0
游客
登录 | 注册 方可回帖
返回
//