首页
社区
课程
招聘
[旧帖] [原创]C三种循环结构逆向分析 0.00雪花
2013-4-28 19:32 3121

[旧帖] [原创]C三种循环结构逆向分析 0.00雪花

2013-4-28 19:32
3121
之前分析的一篇东西申请邀请码
          C语言的3种循环分析
                                                ---forward
C语言中一共有三种类型的循环语句while语句、do语句和for语句,同样都是循环语句但是从汇编的角度来看他们有着不同的循环流程,做了次简单的逆向分析如下
(1)while循环
While在进入循环前会先进行判断,根据比较的结果来决定是否进行循环,如下面代码(到时候我会打包一起上传)

int a,b;
scanf("%d",&b);       /*此处省略N多行反汇编代码*/
a=0;
00401039   mov         dword ptr [ebp-4],0
while(a<b){          /*根据值得比较判断是否进入循环*/
00401040   mov         ecx,dword ptr [ebp-4]
00401043   cmp         ecx,dword ptr [ebp-8]
00401046   jge         main+54h (00401064)
printf("%d\n",a);
00401048   mov         edx,dword ptr [ebp-4]
0040104B   push        edx
0040104C   push        offset string "%d\n" (0042501c)
00401051   call        printf (00401090)
00401056   add         esp,8
a++;
00401059   mov         eax,dword ptr [ebp-4]
0040105C   add         eax,1
0040105F   mov         dword ptr [ebp-4],eax
}              /*jmp指令直接跳到起始处,重新开始*/
00401062   jmp         main+30h (00401040)
15:       return 0;
00401064   xor         eax,eax

在这里要区分if和while,经过反汇编后的while(a<b)与if条件判断的结构非常相似。都是比较相反,比较完之后都往下跳。光从这一点来看它们是一样的,无法直观的的分辨。看看jge的目标地址00401064上面有一个jmp指令并且是指向循环起始处的,很明显这个是个循环语句。可以根据这一个特性来辨别if判断和while判断。利用IDA的流程图分析更为直观 如图


篇幅有限,直接下载pdf附件吧
简单的做下分析,又不到之处欢迎指出

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (8)
雪    币: 81
活跃值: (73)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
forwardbob 1 2013-4-29 13:33
2
0
雪    币: 1257
活跃值: (1424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yllen 2013-4-29 22:12
3
0
看了楼主的帖子,学习了。
雪    币: 29414
活跃值: (18620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2013-4-30 22:22
4
0
己将补足50Kx给你,可以购买邀请码转正了。
雪    币: 81
活跃值: (73)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
forwardbob 1 2013-5-2 15:05
5
0
哈哈 感谢刚叔
雪    币: 249
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
无限游侠 2013-5-2 15:25
6
0
原来这样也能换邀请码。。
雪    币: 81
活跃值: (73)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
forwardbob 1 2013-5-11 14:22
7
0
有何不可呢
雪    币: 81
活跃值: (73)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
forwardbob 1 2014-7-20 22:04
8
0
呵呵
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhouyum 2014-7-20 22:09
9
0
学习了.....
游客
登录 | 注册 方可回帖
返回