作品简介

本书既是一本全面而系统地讲解反汇编与逆向分析技术的安全类专著,又是一部深刻揭示C++内部工作机制的程序设计类著作。理论与实践并重,理论部分系统地讲解了C++的各种语法特性和元素的逆向分析方法和流程,重在授人以渔;实践部分通过几个经典的案例演示了逆向分析技术的具体实施步骤和方法。

全书共分为三大部分:第一部分主要介绍了VC++6.0、OllyDBG和反汇编静态分析工具的使用,以及反汇编引擎的工作原理;第二部分以C/C++语法为导向,以VC++6.0为例,深入解析了每个C/C++知识点的汇编表现形式,包括基本数据类型、表达式、流程控制语句、函数、变量、数组、指针、结构体、类、构造函数、析构函数、虚函数、继承和多重继承、异常处理等,这部分内容重在修炼“内功”,不仅讲解了调试和识别各种C/C++语句的方法,而且还深入剖析了各知识点的底层机制;第三部分是逆向分析技术的实际应用,通过对PEiD、“熊猫烧香”病毒、OllyDBG调试器等的逆向分析将理论和实践很好地融合在了一起。

本书适合所有软件安全领域的工作者、想了解C++内部机制的中高级程序员,以及对Windows底层原理感兴趣的技术人员阅读。

钱林松,资深安全技术专家、软件开发工程师和架构师,从事计算机安全和软件开发工作12年,实践经验极其丰富。尤其精通软件逆向分析技术,对C/C++技术和Windows的底层机制也有非常深入的研究。武汉科锐软件技术有限公司创始人,教学经验丰富,多年来,为国内计算机安全领域培养和输送了大量的人才。活跃于看雪论坛,有较高的知名度和影响力。

作品目录

  • 前言
  • 为什么写这本书
  • 本书适合的读者
  • 本书内容及特色
  • 如何阅读本书
  • 联系作者
  • 致谢
  • 第一部分 准备工作
  • 第1章 熟悉工作环境和相关工具
  • 1.1 调试工具Microsoft Visual C++6.0和OllyDBG
  • 1.2 反汇编静态分析工具IDA
  • 1.3 反汇编引擎的工作原理
  • 1.4 本章小结
  • 第二部分 C++反汇编揭秘
  • 第2章 基本数据类型的表现形式
  • 2.1 整数类型
  • 2.2 浮点数类型
  • 2.3 字符和字符串
  • 2.4 布尔类型
  • 2.5 地址、指针和引用
  • 2.6 常量
  • 2.7 本章小结
  • 第3章 认识启动函数,找到用户入口
  • 3.1 程序的真正入口
  • 3.2 了解VC++6.0的启动函数
  • 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 回顾
  • 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 本章小结
  • 第三部分 逆向分析技术应用
  • 第14章 PEiD的工作原理分析
  • 14.1 开发环境的识别
  • 14.2 开发环境的伪造
  • 14.3 本章小结
  • 第15章 “熊猫烧香”病毒逆向分析
  • 15.1 调试环境配置
  • 15.2 病毒程序初步分析
  • 15.3 “熊猫烧香”的启动过程分析
  • 15.4 “熊猫烧香”的自我保护分析
  • 15.5 “熊猫烧香”的感染过程分析
  • 15.6 本章小结
  • 第16章 调试器OllyDBG的工作原理分析
  • 16.1 INT3断点
  • 16.2 内存断点
  • 16.3 硬件断点
  • 16.4 异常处理机制
  • 16.5 加载调试程序
  • 16.6 本章小结
  • 第17章 反汇编代码的重建与编译
  • 17.1 重建反汇编代码
  • 17.2 编译重建后的反汇编代码
  • 17.3 本章小结
  • 参考文献
展开全部