逆向-逻辑流控制
逻辑流控制 在我的抽象中执行逻辑有三种-顺序、选择、循环。默认汇编就是从上到下顺序执行,选择用if-else和switch,循环用while、for等。 分支语句 if-else int main(int argc, char const *argv[]) { int a=10; if (a>10){ printf("a>10"); }else{ printf("a<=10"); } return 0; int main(int argc, char const *argv[]) { int a=10; if (a>10){ printf("a>10"); }else if(a<2){ printf("a<2"); }else{ printf("2<=a<=10"); } return 0; } 从上面两个二分支和三分支可以看出: 开始标志就是cmp,jcc 这两条标志语句,代表条件判断。 直接跳转的jmp代表执行的是它上面的分支。 每个分支内jmp跳的地址是一样的都是else{};这条语句之后的位置。 巧妙的运用了顺序结构 switch int main(int argc, char const *argv[]) { int a=11; switch (a) { case 10: printf("a=10"); break; case 11: printf("a=11");