新書推薦:
![做自己的靠山:用接纳承诺疗法成为更强大的自己](http://103.6.6.66/upload/mall/productImages/24/27/9787523608098.jpg)
《
做自己的靠山:用接纳承诺疗法成为更强大的自己
》
售價:NT$
311.0
![技术封建主义(数字经济前沿)](http://103.6.6.66/upload/mall/productImages/24/28/9787300328508.jpg)
《
技术封建主义(数字经济前沿)
》
售價:NT$
359.0
![尤物:太平洋的丝绸全球史](http://103.6.6.69/upload/mall/productImages/y24/8/9787545220025.jpg)
《
尤物:太平洋的丝绸全球史
》
售價:NT$
463.0
![吴语百年面貌与变化研究——以嘉兴吴语为例](http://103.6.6.66/upload/mall/productImages/24/28/9787308236041.jpg)
《
吴语百年面貌与变化研究——以嘉兴吴语为例
》
售價:NT$
1030.0
![众生百态:清代刑科题本里的“打工人”](http://103.6.6.66/upload/mall/productImages/24/27/9787500883791.jpg)
《
众生百态:清代刑科题本里的“打工人”
》
售價:NT$
302.0
![此间鸟兽:文物里的中华文明](http://103.6.6.66/upload/mall/productImages/24/26/9787576328592.jpg)
《
此间鸟兽:文物里的中华文明
》
售價:NT$
1030.0
![史记百句(中华经典百句)](http://103.6.6.66/upload/mall/productImages/24/28/9787101166255.jpg)
《
史记百句(中华经典百句)
》
售價:NT$
255.0
![流年碎影(张中行先生88岁高龄写完的人生自传 “这一生我自认为不糊涂。”)](http://103.6.6.66/upload/mall/productImages/24/27/9787530222935.jpg)
《
流年碎影(张中行先生88岁高龄写完的人生自传 “这一生我自认为不糊涂。”)
》
售價:NT$
666.0
|
內容簡介: |
面而系统地讲解反汇编与逆向分析技术的安全类专著,深刻揭示C++内部工作机制的程序设计类著作。
|
關於作者: |
作者简介
钱林松
资深安全技术专家、软件开发工程师和架构师。从事计算机安全和软件开发工作近20年,实践经验丰富,尤其精通软件逆向分析技术,对C/C++技术和Windows的底层机制也有非常深入的研究。
武汉科锐软件技术有限公司(国内知名的安全教育机构)创始人,教学经验丰富,多年来,为国内计算机安全领域培养和输送了大量的人才。活跃于看雪论坛,有较高的知名度和影响力。
张延清
软件逆向教育专家,看雪论坛技术专家。2004年从事数控机床加工编程,2006年进入游戏编程及C/C++开发与逆向分析领域,2011年就职于武汉科锐软件技术有限公司,任技术总监兼授课老师。创立国内首家Android软件逆向分析教育课程体系,该课程体系被多家培训教育机构采用。
科锐·安全实训领军者
科锐(www.51asm.com)创办自2007年,一直专注于逆向分析人才培养,毕业学员逾千人,广泛就业于各安全企业,从事技术与技术管理工作。科锐通过一套严格的科学考核体系,确保学员对每一个知识点的掌握,从而保证教学质量,使每一个毕业学员都能符合企业的用人需求。真正实现以实践为主的实训理念,是我们最终的实训目标。
|
目錄:
|
《C++反汇编与逆向分析技术揭秘(第2版)》目录
第一部分 准备工作
第1章 熟悉工作环境和相关工具
1.1 使用Visual Studio 2017编译程序
1.2 使用gcc编译程序
1.3 使用clang编译程序
1.4调试工具x64DBG
1.5反汇编静态分析工具IDA
1.6反汇编引擎的工作原理
1.7小结
第二部分 C++反汇编揭秘
第2章 基本数据类型的表现形式
2.1 整数类型
2.1.1 无符号整数
2.1.2 有符号整数
2.2 浮点数类型
2.2.1 浮点数的编码方式
2.2.2 浮点基本指令介绍
2.2.3 SSE浮点基本指令介绍
2.3 字符和字符串
2.3.1 字符的编码
2.3.2 字符串的存储方式
2.4 布尔类型
2.5 SSE数据类型
2.6 地址、指针和引用
2.61 指针和地址的区别
2.6.2 各类型指针的工作方式
2.6.3 引用
2.7 常量
2.71 常量的定义
2.7.2 #define和const的区别
2.8 小结
第3章 认识启动函数,找到用户入口
3.1程序的真正入口
3.2了解Visual Studio 2017的启动函数
3.3了解gcc的启动函数
3.4了解clang的启动函数
3.5 main函数的识别
3.6 小结
第4章 流程控制语句的识别
4.1 if语句
4.2 if…else…语句
4.3 用if构成的多分支流程
4.4 switch的真相
4.5 难以构成跳转表的switch
4.6 降低判定树的高度
4.7 do/while/for的比较
4.8 编译器对循环结构的优化
4.9 本章小结
第5章 32位程序函数的工作原理
5.1栈帧的形成和关闭
5.2各种调用方式的考察
5.3使用ebp或esp寻址
5.4函数的参数
5.5函数的返回值
5.6 回顾
5.7 本章小结
第6章 64位程序函数的工作原理
6.1 x64寄存器
6.2调用约定
6.3参数传递
6.4函数的返回值
6.5 回顾
6.6 本章小结
第7章 变量在内存中的位置和访问方式
7.1 全局变量和局部变量的区别
7.2 局部静态变量的工作方式
7.3 堆变量
7.4 小结
第8章 观察各种表达式的求值过程
8.1术运算和赋值
8.1.1各种算术运算的工作形式
8.1.2算术结果溢出
8.1.3再论自增和自减
8.2系运算和逻辑运算
8.2.1关系运算和条件跳转的对应
8.2.2表达式短路
8.2.3条件表达式
8.3运算
8.4译器使用的优化技巧
8.4.1流水线优化规则
8.4.2分支优化规则
8.4.3 cache优化规则
8.5一次算法逆向之旅
8.6 本章小结
第9章 数组和指针的寻址
9.1数组在函数内
9.2数组名作为参数
9.3数组作为返回值
9.4下标寻址和指针寻址
9.5维数组
9.6存放指针类型数据的数组
9.7指向数组的指针变量
9.8函数指针
9.9小结
第10章 结构体和类
10.1 对象的内存布局
10.2 this指针
10.3 静态数据成员
10.4 对象作为函数参数
10.5 对象作为返回值
10.6 小结
第11章 关于构造函数和析构函数
11.1 构造函数的出现时机
11.2 每个对象都有默认的构造函数吗
11.3 析构函数的出现时机
11.4本章小结
第12章 关于虚函数
12.1 虚函数的机制
12.2 虚函数的识别
12.3本章小结
第13章 从内存角度看继承和多重继承
13.1识别类和类之间的关系
13.2 多重继承
13.3 虚基类
13.4 菱形继承
13.5本章小结
第14章 32程序异常处理
14.1异常处理的相关知识
14.2异常类型为基本数据类型的处理流程
14.3异常类型为对象的处理流程
14.4识别异常处理
14.5本章小结
第15章 64程序异常处理
15.1异常处理的相关知识
15.2异常类型为基本数据类型的处理流程
15.3异常类型为对象的处理流程
15.4识别异常处理
15.5本章小结
第三部分 逆向分析技术应用
第16章 PEiD的工作原理分析
16.1 开发环境的识别
16.2 开发环境的伪造
16.3 本章小结
第17章 “熊猫烧香”病毒逆向分析
17.1 调试环境配置
172 病毒程序初步分析
17.3 “熊猫烧香”的启动过程分析
17.4 “熊猫烧香”的自我保护分析
17.5 “熊猫烧香”的感染过程分析
17.6 小结
第18章 分析调试器OllyDBG的工作原理
18.1 INT3断点
18.2 内存断点
18.3 硬件断点
18.4 异常处理机制
18.5 加载调试程序
18.6 小结
第19章 64位病毒逆向分析
19.1 调试环境配置
19.264位病毒程序初步分析
19.3 64位病毒的启动过程分析
19.4 64位病毒的自我保护分析
19.5 64位病毒的感染过程分析
19.6 小结
第20章 反汇编代码的重建与编译
20.1 重建反汇编代码
20.2 编译重建后的反汇编代码
20.3 小结
|
|