注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨夜归人

专业收集资料,个人爱好!

 
 
 

日志

 
 

逆向_第十课  

2010-05-12 07:29:51|  分类: 逆向 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
循环是高级语言中可以进行反向引用的一种语言形式,其他类型的分支语句(比如IF-THEN-ELSE等)都是由低向
 
高地址区域走的.因此,通过这点可以较方便的将循环语句识别出来.如果确定某段代码是循环,就可以分析其计数
 
器,一般是用ecx寄存器做计数器,也有用其他方法来控制循环的,如\"test eax,eax\"等.
看一个简单的循环代码:
xoreax,eax;eax清零
@@:
incecx;计数
....
cmpecx,0A;循环10次
;重复
如果上面的代码用C来表示的话:
while(i<10)
{
....
}
或者:
for(i=0;i<10;i++)
{
....
}
用C写一段比较复杂的循环:
#include \"stdio.h\"
#include \"windows.h\"
int main(void)
{
int i,sum=0;
for(i=0;i<=100;i++)
sum=sum+i;
printf(\"%d\",sum);
Sleep(100000);
return 0;
}
00401028|.C745 F8 00000>MOV DWORD PTR SS:[EBP-8],0 ;变量清零
0040102F|.C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0 ;变量清零
00401036|.EB 09 JMP SHORT 循环.00401041;先跳到比较处
00401038|>8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4];i赋值给eax
0040103B|.83C0 01 |ADD EAX,1 ;eax+1->i+1
0040103E|.8945 FC |MOV DWORD PTR SS:[EBP-4],EAX;eax+1后的值再送还给i
00401041|>837D FC 64|CMP DWORD PTR SS:[EBP-4],64 ;i+1后的值和64h(100)比较
00401045|.7F 0B |JG SHORT 循环.00401052;大于就往下跳
00401047|.8B4D F8 |MOV ECX,DWORD PTR SS:[EBP-8]
0040104A|.034D FC |ADD ECX,DWORD PTR SS:[EBP-4];[ebp-4]是变量i
0040104D|.894D F8 |MOV DWORD PTR SS:[EBP-8],ECX;变量sum
00401050|.^ EB E6 SHORT 循环.00401038
00401052|>8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
00401055|.52PUSH EDX ; /Arg2
00401056|.68 1C004200 PUSH 循环.0042001C ; |Arg1 = 0042001C ASCII \"%d\"
0040105B|.E8 50000000 CALL 循环.004010B0 ; \\循环.004010B0
00401060|.83C4 08 ADD ESP,8
00401063|.8BF4MOV ESI,ESP
00401065|.68 A0860100 PUSH 186A0 ; /Timeout = 100000. ms
0040106A|.FF15 3C514200 CALL DWORD PTR DS:[<&KERNEL32.Sleep>];
 
另一种反汇编出来的情况是
 
xorecx,ecx;变量初始化,即sum=0
xoreax,eax;变量初始化,即i=0
@@:
addecx,eax;相当于sum=sum+i
inceax;eax+1,即i++
cmpeax,64h;将变量i与100比较
;如果eax<100就往上跳
xoreax,eax
ret
  评论这张
 
阅读(315)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017