更新时间:2021-09-27 17:05:41
封面
版权信息
赞誉
序一
序二
序三
前言
第一部分 准备工作
第1章 熟悉工作环境和相关工具
1.1 安装Visual Studio 2019
1.2 安装GCC
1.3 调试工具OllyDbg
1.4 调试工具x64dbg
1.5 调试工具WinDbg
1.6 反汇编静态分析工具IDA
1.7 反汇编引擎的工作原理
1.8 本章小结
第二部分 C++反汇编揭秘
第2章 基本数据类型的表现形式
2.1 整数类型
2.2 浮点数类型
2.3 字符和字符串
2.4 布尔类型
2.5 地址、指针和引用
2.6 常量
2.7 本章小结
第3章 认识启动函数,找到用户入口
3.1 程序的真正入口
3.2 了解VS2019的启动函数
3.3 main函数的识别
3.4 本章小结
第4章 观察各种表达式的求值过程
4.1 算术运算和赋值
4.2 关系运算和逻辑运算
4.3 位运算
4.4 编译器使用的优化技巧
4.5 一次算法逆向之旅
4.6 本章小结
第5章 流程控制语句的识别
5.1 if语句
5.2 if…else…语句
5.3 用if构成的多分支流程
5.4 switch的真相
5.5 难以构成跳转表的switch
5.6 降低判定树的高度
5.7 do、while、for的比较
5.8 编译器对循环结构的优化
5.9 本章小结
第6章 函数的工作原理
6.1 栈帧的形成和关闭
6.2 各种调用方式的考察
6.3 使用ebp或esp寻址
6.4 函数的参数
6.5 函数的返回值
6.6 x64调用约定
6.7 本章小结
第7章 变量在内存中的位置和访问方式
7.1 全局变量和局部变量的区别
7.2 局部静态变量的工作方式
7.3 堆变量
7.4 本章小结
第8章 数组和指针的寻址
8.1 数组在函数内
8.2 数组作为参数
8.3 数组作为返回值
8.4 下标寻址和指针寻址
8.5 多维数组
8.6 存放指针类型数据的数组
8.7 指向数组的指针变量
8.8 函数指针
8.9 本章小结
第9章 结构体和类
9.1 对象的内存布局
9.2 this指针
9.3 静态数据成员
9.4 对象作为函数参数
9.5 对象作为返回值
9.6 本章小结
第10章 构造函数和析构函数
10.1 构造函数的出现时机
10.2 每个对象是否都有默认的构造函数
10.3 析构函数的出现时机
10.4 本章小结
第11章 虚函数
11.1 虚函数的机制
11.2 虚函数的识别
11.3 本章小结
第12章 从内存角度看继承和多重继承
12.1 识别类和类之间的关系
12.2 多重继承
12.3 抽象类
12.4 虚继承
12.5 本章小结
第13章 异常处理
13.1 异常处理的相关知识
13.2 异常类型为基本数据类型的处理流程
13.3 异常类型为对象的处理流程
13.4 识别异常处理
13.5 x64异常处理
13.6 本章小结