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


    写在开始

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

  • 相关阅读:
    关于SVM数学细节逻辑的个人理解(二):从基本形式转化为对偶问题
    关于SVM数学细节逻辑的个人理解(三) :SMO算法理解
    [2017BUAA软工]第0次个人作业
    关于SVM数学细节逻辑的个人理解(一) :得到最大间隔分类器的基本形式
    个人作业Week 1
    [2017BUAA软工]第一次个人项目 数独的生成与求解
    windows下安装webgoat
    .net 的StringComparison
    飞信登录过程的协议分析 (TCP直连方式)
    C#的String.Split方法
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8533084.html
Copyright © 2020-2023  润新知