zoukankan      html  css  js  c++  java
  • 如何快速查看将C反汇编的代码

    https://www.cnblogs.com/jack204/archive/2011/12/02/2271884.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;
    }
    复制代码

    结构体反汇编代码:



  • 相关阅读:
    葡萄城报表介绍:Web 报表
    葡萄城报表介绍:B/S 报表软件
    深入解析 ERP 计划的各个层次
    大数据商业智能的十大戒律
    活字格企业 Web 应用生成器新手上路指南
    ERP 实施执行力提高的障碍,看看你中了几招?
    11招教你做好 ERP 系统维护
    使用yum命令安装lamp和lnmp
    yii2文件上传
    yii2.0使用ActionForm创建表单
  • 原文地址:https://www.cnblogs.com/twodog/p/12138034.html
Copyright © 2011-2022 走看看