如何快速查看将C反汇编的代码

    xiaoxiao2022-07-02  128

    转自:https://www.cnblogs.com/jack204/archive/2011/12/02/2271884.html 阅读:https://www.cnblogs.com/qiangua/p/3717691.html

    查看反汇编主要的思路在于将 流程,处理,算法 区分开来。1 函数调用:原C代码:

    int sum(int, int);int main(){ int c = sum(1, 2); printf("c=%d", c); return 0;}int sum(int a, int b){ int c = a + b; return c;}

    反汇编的函数调用主要使用bp-frame式(不懂自己去查去)的调用方式:

    mmm

    然后是被调用的sum:

    ss

     

    2  for循环:基本的for循环是这样的:

    int sum(int b){ int c, i=0; c = 0; for(i=0; i<4; i++){ c += b; } return c;}

    然后反汇编后,for循环一般是以下的形式的:

    下面看看上面的c代码反汇编后变成了什么:

    3 do-while循环例子代码为:

    int sum(int b){ int c, i=0; c = 0; do{ c += b; i++; }while(i < 4); return c;}

    do-while循环的基本结构:

    然后我例子代码的反汇编为:

     

    4 while循环|例子代码为:

    int sum(int b){ int c, i=0; c = 0; while(i < 4){ c += b; } return c;}

    while反汇编的基本结构为:

    上述代码反汇编的结果为:

    5 if-else分支判断:例子代码的c语言为:

    int sum(int b){ int c, i=0; c = 0; if(i<0){ c = -1; }else if(i<1){ c = 1; }else if(i<3){ c = 3; } return c;}

    if-else分支的基本结构:

    然后上述代码的反汇编结果为:

    6 switch-case 判断分支:

    int sum(int b){ int c, i=0; c = 0; switch(i){ case 1: c = -1; break; case 2: c = 0; break; case 3: c = 1; break; default: c = 2; } return c;}

    反汇编结果很直接:

     

     7 使用结构体:结构体的例子代码:

    int sum(int b){ jack j; pjack pj = &j; j.one = 1; j.two = 2; pj->one = 3; pj->two = 4; return pj->two;}

    结构体反汇编代码:

    最新回复(0)