首页
社区
课程
招聘
[原创]for循环反汇编总结
发表于: 2013-3-1 15:08 6695

[原创]for循环反汇编总结

2013-3-1 15:08
6695

说来惭愧,本人对逆向分析一事倍感吃力,料定是基础不牢所致。故下决心恶补基础知识,现定将《C++ Primer》从头到尾再复习一遍,无分难易,并将其逆向分析一翻。一来复习C++,二来复习汇编,三来积攒逆向知识。望与大家相互学习,争取早日可与大牛比肩。此,感谢论坛热心朋友 疯子和hilter的热心帮助,他们一翻指点让我大有茅塞顿开之感。
—————————————————————————————————————————————

for(i=1;i<=100;++i)
00881008  mov         eax,1  
0088100D  xor         ecx,ecx  
0088100F  nop  
  {
    sum+=i;
00881010  add         edi,eax  
00881012  lea         ecx,[ecx+eax+1]  
00881016  lea         edx,[edx+eax+2]  
0088101A  lea         esi,[esi+eax+3]  
0088101E  add         eax,4  
00881021  cmp         eax,64h  
00881024  jle         main+10h (881010h)  
  }

  cout<<sum;
00881026  add         esi,edx  
00881028  add         esi,ecx  
0088102A  mov         ecx,dword ptr [__imp_std::cout (882048h)]  
00881030  add         edi,esi  
00881032  push        edi  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 6
支持
分享
最新回复 (2)
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
int i;
  for(i=1;i<=97;++i)
00C4101E  cmp         eax,61h  
00C41021  jg          main+25h (0C41025h)  ;如果eax > 97 就跳过给esi 的赋值,如果没有给esi 赋值;esi就是0       00C41027  处就等于 什么都没做 
  {
    sum+=i;
00C41023  mov         esi,eax  
00C41025  add         ecx,edx  
00C41027  add         ecx,esi  
  }



 int i;
 for(i=1;i<=97;++i)
00C4101E  cmp         eax,61h  
00C41021  jg          main+25h (0C41025h)  
 {
    sum+=i;
00C41023    add         ecx,eax  ;如果汇编代码是这样的应该就可以直接 加eax了
00C41025    add         ecx,edx
  }

我也是菜鸟,如果有什么不对的地方希望指正
2013-3-1 15:43
0
雪    币: 385
活跃值: (32)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
谢谢你,不过还是不懂为什么编译器要用ESI进行累加 这样不是多进行了一步运算吗? 我也觉得可以直接用EAX进行操作  或许应该看看编译原理方面的书去
2013-3-1 16:05
0
游客
登录 | 注册 方可回帖
返回
//