switch結構分析
C語言源代碼:
#include <stdio.h>
int main()
{
int nNum = 0;
scanf("%d",&nNum);
switch(nNum)
{
case 1:
{
printf("1 \r\n");
break;
}
case 2:
{
printf("2 \r\n");
break;
}
case 3:
{
printf("3 \r\n");
break;
}
case 4:
{
printf("4 \r\n");
break;
}
default:
{
printf("default \r\n");
break;
}
return 0;
}
}
逆向反彙編解析:
switch流程分支圖如下:
查看分支代碼:
00401058地址處的代碼跳轉如下:
上圖連續四個標號地址,分別對應着4個case對應的代碼,該數組中保存了4個值,用表索引正好也是0-3,也就是可以通過var_8中對應的值進行訪問。