首页
社区
课程
招聘
[求助]关于逆向switch语句问题
发表于: 2013-4-17 20:37 3872

[求助]关于逆向switch语句问题

2013-4-17 20:37
3872
  在switch中,每两个case值之间的差值小于等于6,必须是序的线性表,并且case语句大于等于4,就会采用有序线性查表方式。

   
在我的电脑上 两个CASE之间的值大于6 为什么还编译器还采用索引表呢
63:   int nIndex = 0;
00401006   mov         dword ptr [nIndex],0
64:       scanf("%d", &nIndex);
0040100D   lea         eax,[nIndex]
00401010   push        eax
00401011   push        offset ___xi_z+4 (00403010)
00401016   call        dword ptr [__imp__scanf (00402004)]
0040101C   add         esp,8
65:
66:
67:       switch(nIndex)
68:       {
0040101F   mov         ecx,dword ptr [nIndex]
00401022   mov         dword ptr [ebp-8],ecx
00401025   cmp         dword ptr [ebp-8],0Ah
00401029   ja          $L542+0Eh (0040107b)
0040102B   mov         eax,dword ptr [ebp-8]
0040102E   xor         edx,edx
00401030   mov         dl,byte ptr  (00401093)[eax]  ;采用索引表
00401036   jmp         dword ptr [edx*4+40107Fh]
69:       case 0:
70:           printf("nIndex == 1");
0040103D   push        offset ___xi_z+8 (00403014)
00401042   call        dword ptr [__imp__printf (00402000)]
00401048   add         esp,4
71:           break;
0040104B   jmp         $L542+0Eh (0040107b)
72:       case 8:
73:           printf("nIndex == 4");
0040104D   push        offset ___xi_z+14h (00403020)
00401052   call        dword ptr [__imp__printf (00402000)]
00401058   add         esp,4
74:           break;
0040105B   jmp         $L542+0Eh (0040107b)
75:       case 9:
76:           printf("nIndex == 8");
0040105D   push        offset ___xi_z+20h (0040302c)
00401062   call        dword ptr [__imp__printf (00402000)]
00401068   add         esp,4
77:           break;
0040106B   jmp         $L542+0Eh (0040107b)
78:       case 10:
79:           printf("nIndex == 12");
0040106D   push        offset ___xi_z+2Ch (00403038)
00401072   call        dword ptr [__imp__printf (00402000)]
00401078   add         esp,4

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有什么问题吗?大于6是使用索引表+地址表,小于等于6使用线性地址表
2013-4-22 10:31
0
游客
登录 | 注册 方可回帖
返回
//