000、《C++反汇编与逆向分析技术揭秘》读书笔记总览
这组笔记怎么用
这组内容以第二版 18 章目录为骨架,属于我阅读前使用的结构化底稿。笔记不是原书正文的替代品,也不代表作者原话;阅读时需要结合书中示例、自己的编译结果和调试记录不断修正。
最有效的阅读方法是:先读一节,再亲自编译最小示例,最后关闭源码只看反汇编复述语义。
推荐每章完成四轮:
- 看目录和本章问题,建立预期。
- 阅读原书,标记与笔记不一致或遗漏之处。
- 使用 Debug、Release、x86、x64 四种组合观察差异。
- 把自己的截图、地址变化和结论补回笔记。
正版电子书
公开笔记与校对资料
这些资料主要用于交叉核对章节结构、实验思路和旧版反汇编现象,不直接复制原文。多数内容基于第 1 版、VC6 或 32 位环境,阅读时需要结合当前编译器重新验证。
公开笔记中有些结论只适用于特定编译器和架构。例如 this 的传递位置、对象布局、虚表结构和优化结果都不是跨平台固定规则。本组笔记会明确区分 x86 旧环境、Windows x64 ABI 与编译器实现细节。
全书目录
第一部分:准备工作
| 编号 | 章节 | 本章主线 |
|---|---|---|
| 001 | 熟悉工作环境和相关工具 | VS、GCC、OllyDbg、x64dbg、WinDbg、IDA 与反汇编引擎 |
第二部分:C++ 反汇编揭秘
| 编号 | 章节 | 本章主线 |
|---|---|---|
| 002 | 基本数据类型的表现形式 | 整数、浮点数、字符、指针、引用和常量 |
| 003 | 认识启动函数,找到用户入口 | PE 入口、CRT 启动代码和 main 定位 |
| 004 | 观察各种表达式的求值过程 | 算术、逻辑、位运算和优化 |
| 005 | 流程控制语句的识别 | if、switch、循环和控制流图 |
| 006 | 函数的工作原理 | 栈帧、参数、返回值与调用约定 |
| 007 | 变量在内存中的位置和访问方式 | 全局、局部、静态和堆变量 |
| 008 | 数组和指针的寻址 | 数组、指针、多维寻址和函数指针 |
| 009 | 结构体和类 | 对象布局、this、静态成员和对象传参 |
| 010 | 构造函数和析构函数 | 构造、析构、对象生命周期和隐藏调用 |
| 011 | 虚函数 | 虚表、虚表指针和动态绑定 |
| 012 | 从内存角度看继承和多重继承 | 单继承、多继承、抽象类和虚继承 |
| 013 | 异常处理 | try/catch、对象异常和 x64 展开信息 |
第三部分:逆向分析技术应用
| 编号 | 章节 | 本章主线 |
|---|---|---|
| 014 | PEiD 的工作原理分析 | 编译器特征识别与可信度边界 |
| 015 | OllyDbg 的工作原理分析 | 软件、内存、硬件断点和调试事件 |
| 016 | 远控木马样本分析方法 | 隔离环境、行为链和通信协议分析 |
| 017 | WannaCry 勒索病毒分析方法 | 勒索模块、蠕虫模块、漏洞背景和防御证据 |
| 018 | 反汇编代码的重建与编译 | 函数原型、数据结构、控制流和语义验证 |
总体知识地图
1 | 工具与架构 |
全书检查清单
| 检查项 | 状态 |
|---|---|
| 能独立搭建 x86/x64 编译与调试环境 | 待复盘 |
| 能从机器代码判断常见数据类型和控制结构 | 待复盘 |
| 能恢复函数参数、返回值和调用约定 | 待复盘 |
| 能根据内存布局还原结构体和类 | 待复盘 |
| 能识别虚表、继承和异常处理结构 | 待复盘 |
| 能在隔离环境中完成恶意样本的防御性分析 | 待复盘 |
| 能把局部反汇编整理成可验证的伪代码 | 待复盘 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!





















