码迷,mamicode.com
首页 > 其他好文 > 详细

反汇编逆向实例_dowhile语句反汇编

时间:2014-08-01 18:38:12      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   strong   io   cti   代码   

反汇编逆向实例_dowhile语句反汇编

                                                                                    by:比方

示例代码如下:

 1  #include"stdio.h"
 2  int function(int a,int b)
 3  {
 4       int c=a+b;
 5       int i=0;
 6       do
 7       {
 8           c=c+i;
 9       }while(i<50);
10       return c;
11  }
12  void main()
13  {
14       function(1,2);
15  }

 

反汇编代码

1 #include "stdio.h"
2 
3 
4 int function(int a,int b)
5 
6 {
012E1A40 push ebp
012E1A41 mov ebp,esp
012E1A43 sub esp,0D8h
 
012E1A49 push ebx                                           ;保存环境
012E1A4A push esi
012E1A4B push edi
 
012E1A4C lea edi,[ebp-0D8h]                            ;初始化为0xCC
012E1A52 mov ecx,36h
012E1A57 mov eax,0CCCCCCCCh
012E1A5C rep stos dword ptr es:[edi]
 
1     int c=a+b;
012E1A5E mov eax,dword ptr [a]
012E1A61 add eax,dword ptr [b]
012E1A64 mov dword ptr [c],eax
 
 
1     int i=0;

012E1A67 mov dword ptr [i],0

 

 

  do
    {
        c=c+i;
012E1A6E mov eax,dword ptr [c]     ;进过前面的两章讲解,对于这样的结构相比已经很熟习了吧
012E1A71 add eax,dword ptr [i]
012E1A74 mov dword ptr [c],eax
 
 
1    }while(i<50);
012E1A77 cmp dword ptr [i],32h                ;     比较是否大于50,如果小于则往上跳
012E1A7B jl function+2Eh (12E1A6Eh)

 
1     return c;
012E1A7D mov eax,dword ptr [c]
 
 
}
 
012E1A80 pop edi
012E1A81 pop esi
012E1A82 pop ebx
 
012E1A83 mov esp,ebp
012E1A85 pop ebp

012E1A86 ret  

 
总结:do while的循环相对来说容易识别很多
 
do_Begin
 
..
...
 
jxx do_Begin                ;这里有一个往上跳的过程
 
 
            ;先执行语句块,在做比较,当条件成立时,会继续执行语句快,
 

反汇编逆向实例_dowhile语句反汇编,布布扣,bubuko.com

反汇编逆向实例_dowhile语句反汇编

标签:style   blog   color   os   strong   io   cti   代码   

原文地址:http://www.cnblogs.com/hailunchina/p/3885100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!