查看反汇编主要的思路在于将 流程,处理,算法 区分开来。
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;
}

结构体反汇编代码:

如何快速查看将C反汇编的代码的更多相关文章

  1. C#程序集系列02,使用记事本查看可执行程序集的IL代码

    继续上一篇"C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序",在F盘的as文件夹中已经有了若干程序集.本篇体验使用记事本查看可执行程序集的IL代码 ...

  2. 怎样使用Debussy+ModelSim快速查看前仿真波形

    引子:ModelSim是HDL仿真软件,Debussy是波形查看软件:搭配使用,相当爽.此处所谓快速查看前仿真波形仅为抛砖引玉,大家不要拘泥于此.两款软件的功能都很强大,请自行研究. 注:本篇博文的软 ...

  3. 使用threaddump-analyzer 快速查看jvm thread 状态信息

    日常开发中,我们可以需要通过thread dump 查看线程信息,比如锁,spotify 团队提供了一个web 界面,很方便 以下是简单使用,同时添加了docker 支持 添加docker 支持 cl ...

  4. sp_help 快速查看表结构、视图信息

    sp_helptext: 是MS SQL Server的一个系统存储过程,可以通过它来查看存储过程或者视图.函数源码 示例:sp_helptext viewName (viewName  即要查询的存 ...

  5. MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型

    --表描述 SELECT tbs.name 表名,ds.value 描述 FROM sys.extended_properties ds LEFT JOIN sysobjects tbs ON ds. ...

  6. 如何快速读懂大型C++程序代码

    要搞清楚别人的代码,首先,你要了解代码涉及的领域知识,这是最重要的,不懂领域知识,只看代码本身,不可能搞的明白.其次,你得找各种文档:需求文档(要做什么),设计文档(怎么做的),先搞清楚你即将要阅读是 ...

  7. 推荐一款非常棒的谷歌插件---快速查看HTML页面元素的CSS样式

    一.下载地址 http://chromecj.com/web-development/2015-05/456/download.html 二.简介 CssViewer是一款快速查看当前页面元素的CSS ...

  8. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  9. 动手动脑之查看String.equals()方法的实现代码及解释

    动手动脑 请查看String.equals()方法的实现代码,注意学习其实现方法. 第一个是false,后三个是true. package stringtest; public class Strin ...

随机推荐

  1. DevExpress 中 在做全选的全消功能的时候 加快效率

    在做 DevExpress 中对增加的选择 Check列 控制全选的全消时通过以下代码红色字代码效率会有明显的提升: private void CheckedRow() { try { splashS ...

  2. Oracle自用脚本(持续更新)

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

  3. Oracle 11g 执行计划管理1

    1. 执行计划管理的工作原理 1.1控制执行计划的稳定性 11g之前,可以使用存储大纲(stored outline)和SQL Profile来固定某条SQL语句的执行计划,防止由于执行计划发生变化而 ...

  4. 算法系列3《SHA》

    SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用.该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小 ...

  5. Android--监听ListView滚动到最底部

    监听ListView滚动到最底部使用 onScrollStateChanged(AbsListView view, int scrollState) 方法,代码大致如下: // 监听listview滚 ...

  6. hdu 1277 全文检索

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1277 全文检索 Description 我们大家经常用google检索信息,但是检索信息的程序是很困难 ...

  7. Mysql海量数据存储和解决方案之一—分布式DB方案

    1)  分布式DB水平切分中用到的主要关键技术:分库,分表,M-S,集群,负载均衡 2) 需求分析:一个大型互联网应用每天几十亿的PV对DB造成了相当高的负载,对系统的稳定性的扩展性带来极大挑战. 3 ...

  8. Swift基础小结_2

    import Foundation // MARK: - ?和!的区别// ?代表可选类型,实质上是枚举类型,里面有None和Some两种类型,其实nil相当于OPtional.None,如果非nil ...

  9. 10个 iOS 用户暂可以嘲笑 Android 的特点

    Android 与 iOS 设备之间的争斗从未停止,毕竟一切高科技产品的理念和实际表现方式都不相同.就拿 Android 来说,很多功能令用户并 不太开心,甚至是令人愤怒,下面让我们来简单的盘点 10 ...

  10. C# 生成XML 多级节点

    直接上代码: 在应用程序中 class Program { //public static JsonServiceClient Service = new JsonServiceClient(Conf ...