我为什么要学习C++反汇编

简介: 写在开始从6月7日开始到今天已经有5天了,在这5天的业余时间(工作之余)里终于系统的完成了C++反汇编的大部分问题的学习,今天写篇总结,算是对这几天学习的总结。首先我想说明的一个问题就是我为什么要花时间研究C++反汇编?这事得从笔者遇到的一个问题开始说起,大约2周前我们项目做在开发过程中遇到了一个Crash的问题,由于只有客户提供的一个.

写在开始

从6月7日开始到今天已经有5天了,在这5天的业余时间(工作之余)里终于系统的完成了C++反汇编的大部分问题的学习,今天写篇总结,算是对这几天学习的总结。

首先我想说明的一个问题就是我为什么要花时间研究C++反汇编?

这事得从笔者遇到的一个问题开始说起,大约2周前我们项目做在开发过程中遇到了一个Crash的问题,由于只有客户提供的一个.dmp文件,我们只能从这个地方入手,说起来很奇怪,从C++代码的角度根本看不出来问题,我找来了一个传说中的公司的大牛,大牛就在我面前给我详细的分析了一遍这个转储文件,感觉他看反汇编出来的代码就像看C++源代码一样,看问题也会更透彻,这个问题分析结束了之后笔者觉得应该在这方面稍微研究一下,于是有了最近的几篇文章。

我是怎么研究的

说起汇编代码,最开始接触是上大学的时候,学校教的IBM-PC汇编语言,当时觉得还成,用汇编写些东西还算顺利,后来大三以后在做在做嵌入式开发(ARM,DSP开发笔者都略懂)的时候也写过一些汇编的代码,那么为什么看C++反出来的汇编我突然看不懂了呢?

首先就是对不上号,看到汇编代码,不知道对应的C++代码应该是什么样子的,于是在这几天里面我写了很多的demo, 试图找到两者之间的对应关系,包括:

1.       函数调用

2.       虚函数处理

3.       类处理

4.       This指针

5.       虚表

6.       参数传递

7.       栈实现

终于把这两者之间的对应关系找到了,找到了这两者的对应关系以后,再去看反出来汇编感觉是有如神助,行云流水,不敢说全懂了,但是大部分已经打通了。

总结,建议和致谢

感谢大牛让我见识到了C++反汇编有东西需要学,其实学习这东西不是说一个人有多牛,重要的是你应该根据自己的情况知道自己欠缺哪方面的知识,并且知道如何去补上这些东西,如果有需要同样知识的朋友,建议作代码对比,个人觉得这是一个捷径。如果对这方面有什么问题欢迎一起讨论,共勉..

目录
相关文章
|
存储 Unix Linux
C++反汇编代码分析–函数调用
转载:http://shitouer.cn/2010/06/method-called/ 代码如下:#include “stdlib.h” int sum(int a,int b,int m,int n){ return a+b; } void main(){ int result = sum(1,2,3,4); system(“pause”); } 有四个参数的sum函数,接着在main方法中调用sum函数。
1075 0
|
Web App开发 C++ iOS开发
[WebKit]C++类的数据结构及在反汇编上的应用
在反汇编常常要在无法使用调试信息和源代码的情况下查看数据内容,数据结构比较好处理,如果是C++的类,就需要做些总结了。 基础 - POD? C++的成员变量的排列顺序关键在于区别是不是POD(Plain Old Data)类型,从而确定是否需要有VPTR。
1042 0
|
2天前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
13 0
|
4天前
|
C语言 C++
【C++】string类(常用接口)
【C++】string类(常用接口)
13 1
|
1天前
|
编译器 C++
【C++】继续学习 string类 吧
首先不得不说的是由于历史原因,string的接口多达130多个,简直冗杂… 所以学习过程中,我们只需要选取常用的,好用的来进行使用即可(有种垃圾堆里翻美食的感觉)
7 1
|
1天前
|
算法 安全 程序员
【C++】STL学习之旅——初识STL,认识string类
现在我正式开始学习STL,这让我期待好久了,一想到不用手撕链表,手搓堆栈,心里非常爽
8 0
|
1天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
6 0