反汇编——逆向初步(2)
来源:互联网 发布:中国移动有什么软件 编辑:程序博客网 时间:2024/06/08 18:50
逆向初步(1)介绍的是if……else语句在反汇编中的事例,现在我们来看看switch……case语句在反汇编长啥样。我们先来看一段简单的使用switch……case语句的程序,其代码如下:
#include
main()
{
int c = 5;
switch(c)
{
case 0:
printf("c = 0");
break;
case 5:
printf("c = 5");
break;
case 10:
printf("c = 10");
break;
default:break;
}
}
接下来我们来看它对应的反汇编代码,如下所示:
4: int c =5;
00401028 mov dword ptr[ebp-4],5
5: switch(c)
6: {
0040102F mov eax,dwordptr [ebp-4]
00401032 mov dword ptr[ebp-8],eax
00401035 cmp dword ptr[ebp-8],0
00401039 je main 39h(00401049)
0040103B cmp dword ptr[ebp-8],5
0040103F je main 48h(00401058)
00401041 cmp dword ptr[ebp-8],0Ah
00401045 je main 57h(00401067)
00401047 jmp main 64h(00401074)
7: case 0:
8: printf("c =0");
00401049 push offset string"c = 0" (0042202c)
0040104E call printf(004010b0)
00401053 add esp,4
9: break;
00401056 jmp main 64h(00401074)
10: case 5:
11: printf("c =5");
00401058 push