首页
社区
课程
招聘
[推荐] 踩楼赠书来啦!反汇编与逆向工程标志性著作:《C++反汇编与逆向分析技术揭秘》(第2版)
2021-9-26 15:00 29388

[推荐] 踩楼赠书来啦!反汇编与逆向工程标志性著作:《C++反汇编与逆向分析技术揭秘》(第2版)

2021-9-26 15:00
29388

反汇编与逆向工程标志性著作:第1版畅销近10年,影响数十万安全工程师和C++工程师

随着软件技术的发展及其在各个领域的广泛应用,对软件进行逆向分析,通过阅读其反汇编代码推断数据结构、体系结构和程序设计思路的需求越来越多。逆向分析技术能帮助我们更好地研究和学习先进的软件技术,特别是当我们非常想知道某个软件的某些功能是如何实现的而手头又没有合适的资料时。


如果能够利用逆向技术去研究一些一流软件的设计思想和实现方法,那么我们的软件技术水平将会得到极大的提升。目前,国内关于逆向分析技术的资料实在不多,大中专院校的计算机相关专业对此技术也没有足够的重视。


有很多人认为研究程序的内部原理会破坏“黑盒子”的封装性,但是如果我们只是在别人搭建好的平台上做开发,那么始终只能使用别人提供的未开源的SDK,会一直受牵制。如果我们能够充分掌握逆向分析方法,就可以洞悉各种SDK的实现原理,学习各种一流软件采用的先进技术,取长补短,为我所用。若能如此,实为我国软件产业之幸。


在逆向技术这方面的书籍,以及相关文档和资料极度匮乏的种条件下,这本全面讲解反汇编与逆向分析技术的书来了,《C++反汇编与逆向分析技术揭秘》(第2版)。在这本书中,作者将自己多年来在反汇编与逆向分析技术领域的经验和心得整理出来与大家分享,希望更多的开发人员在掌握这项技术后能更好地将其应用到软件开发实践中,从而提高我国软件行业的整体水平。

读者对象

无论大家从事哪个行业,在开始阅读本书之前,都需要具备以下几个方面的基础知识。

  • 数据结构的基础知识,如栈结构存取元素的特点等。

  • 汇编的基础知识,如寻址方式和指令的使用等。

  • C/C++语言的基础知识,如指针、虚函数和继承的概念等。

  • 熟悉Visual Studio 2019的常用功能,如观察某变量的地址、单步跟踪等。

 

具备了上面这些基础知识,就可以根据自己的实际需求学习本书的内容。

  • 如果你是一位软件研发人员,你将通过本书更深入地了解C++语法的实现机制,对产品知其然更知其所以然。在精读反汇编代码后,你的调试水平也会得到质的提升。

  • 如果你是一位反病毒分析人员或者电子证据司法取证分析人员,通过逆向分析恶意软件样本,你可以进行取证分析处理,例如,分析开发者的编写习惯、推断开发者的编程水平,甚至可以进一步判定某病毒样本是否与其他病毒出自同一人之手。

  • 如果你是一位高等院校计算机相关专业的学生(本科或本科以上),你可以通过学习书中的软件逆向分析技术来拓展思路,为未来进军软件研发行业打下基础。


内容简介


这是一部系统讲解反汇编与逆向分析技术原理、流程、方法和实用技巧的著作。


本书第1版出版于2011年,10年来畅销不衰,成为反汇编与逆向工程领域的标志性著作,被数十万安全工程师和C++工程师奉为瑰宝。在全球学术界和企业界都享有盛誉,故第2版得到了全球15位安全技术专家的倾力推荐。第2版在技术、工具和案例等方面做了大量的更新和补充。

 

通过本书,你将掌握以下知识或技能:

  • 逆向分析技术的工具和原理;

  • 逆向分析技术的流程和方法;

  • 逆向分析技术的精髓和实用技巧;

  • 软件调试的技术原理,以及代码运行时的内存表现;

  • C++语法的实现机制和反汇编表现形式;

 

全书共18章,分为三个部分:

第一部分 准备工作 (第1章)

简单地介绍了编译器、调试器和反汇编静态分析工具的使用方法以及反汇编引擎的工作原理;

第二部分C++反汇编揭秘(第2~13章)

以多种编译器为例解析了每个C/C++知识点的汇编表现形式,通过整理反汇编代码梳理流程和脉络,讲解了调试和识别各种C/C++语句的方法,并且深入剖析各知识点的底层机制;

第三部分 逆向分析技术应用(第14~18章)

通过对PEiD、调试器 OllyDbg、木马、勒索病毒等实际应用的逆向分析,带领读者领路逆向分析技术的魔力,并加深对所学理论知识的理解。

第2版做了哪些更新

1、重新设计所有示例

2、所有反汇编代码均使用最新Visual Studio 2019 编译器编译

3、增加最新 Clang 编译器反汇编代码讲解

4、增加最新 GCC 编译器反汇编代码讲解

5、增加所有编译器 64 位程序反汇编代码讲解

6、随书文件增加所有示例单独源码

7、随书文件增加所有编译器编译后的可执行程序

8、根据最新编译器删除了一些过时内容

9、根据最新编译器增加了一些新内容

10、增加和更新了病毒分析示例


作者简介

钱林松

资深安全技术专家、软件开发工程师和架构师。从事计算机安全和软件开发工作近20年,实践经验丰富,尤其精通软件逆向分析技术,对C/C++技术和Windows的底层机制也有非常深入的研究。

武汉科锐软件技术有限公司(国内知名的安全教育机构)创始人,教学经验丰富,多年来,为国内计算机安全领域培养和输送了大量的人才。活跃于看雪论坛,有较高的知名度和影响力。


张延清

软件逆向教育专家,看雪论坛技术专家。2004年从事数控机床加工编程,2006年进入游戏编程及C/C++开发与逆向分析领域,2011年就职于武汉科锐软件技术有限公司,任技术总监兼授课老师。创立国内首家Android软件逆向分析教育课程体系,该课程体系被多家培训教育机构采用。

 

目录

目 录  Contents

赞誉

序一

序二

序三

前言


第一部分 准备工作

第1章 熟悉工作环境和相关工具2

1.1 安装Visual Studio 20192

1.2 安装GCC6

1.3 调试工具OllyDbg12

1.4 调试工具x64dbg14

1.5 调试工具WinDbg15

1.6 反汇编静态分析工具IDA17

1.7 反汇编引擎的工作原理22

1.8 本章小结27


第二部分 C++反汇编揭秘

第2章 基本数据类型的表现形式30

2.1 整数类型30

2.1.1 无符号整数30

2.1.2 有符号整数31

2.2 浮点数类型32

2.2.1 浮点数的编码方式33

2.2.2 基本的浮点数指令35

2.3 字符和字符串43

2.3.1 字符的编码43

2.3.2 字符串的存储方式44

2.4 布尔类型45

2.5 地址、指针和引用46

2.5.1 指针和地址的区别46

2.5.2 各类型指针的工作方式47

2.5.3 引用56

2.6 常量60

2.6.1 常量的定义60

2.6.2 #define和const的区别62

2.7 本章小结65


第3章 认识启动函数,找到用户入口66

3.1 程序的真正入口66

3.2 了解VS2019的启动函数66

3.3 main函数的识别70

3.4 本章小结71


第4章 观察各种表达式的求值过程72

4.1 算术运算和赋值72

4.1.1 各种算术运算的工作形式72

4.1.2 算术结果溢出130

4.1.3 自增和自减131

4.2 关系运算和逻辑运算136

4.2.1 关系运算和条件跳转的对应136

4.2.2 表达式短路137

4.2.3 条件表达式141

4.3 位运算149

4.4 编译器使用的优化技巧152

4.4.1 流水线优化规则155

4.4.2 分支优化规则158

4.4.3 高速缓存优化规则159

4.5 一次算法逆向之旅159

4.6 本章小结164


第5章 流程控制语句的识别165

5.1 if语句165

5.2 if…else…语句168

5.3 用if构成的多分支流程174

5.4 switch的真相180

5.5 难以构成跳转表的switch196

5.6 降低判定树的高度201

5.7 do、while、for的比较206

5.8 编译器对循环结构的优化214

5.9 本章小结220


第6章 函数的工作原理221

6.1 栈帧的形成和关闭221

6.2 各种调用方式的考察222

6.3 使用ebp或esp寻址226

6.4 函数的参数230

6.5 函数的返回值232

6.6 x64调用约定235

6.7 本章小结238


第7章 变量在内存中的位置和访问方式239

7.1 全局变量和局部变量的区别239

7.2 局部静态变量的工作方式247

7.3 堆变量252

7.4 本章小结256


第8章 数组和指针的寻址257

8.1 数组在函数内257

8.2 数组作为参数266

8.3 数组作为返回值270

8.4 下标寻址和指针寻址276

8.5 多维数组282

8.6 存放指针类型数据的数组288

8.7 指向数组的指针变量290

8.8 函数指针296

8.9 本章小结299


第9章 结构体和类300

9.1 对象的内存布局300

9.2 this指针305

9.3 静态数据成员311

9.4 对象作为函数参数314

9.5 对象作为返回值322

9.6 本章小结329


第10章 构造函数和析构函数331

10.1 构造函数的出现时机331

10.2 每个对象是否都有默认的构造函数353

10.3 析构函数的出现时机355

10.4 本章小结375


第11章 虚函数377

11.1 虚函数的机制377

11.2 虚函数的识别383

11.3 本章小结389


第12章 从内存角度看继承和多重继承391

12.1 识别类和类之间的关系392

12.2 多重继承418

12.3 抽象类426

12.4 虚继承428

12.5 本章小结443


第13章 异常处理445

13.1 异常处理的相关知识445

13.2 异常类型为基本数据类型的处理流程451

13.3 异常类型为对象的处理流程459

13.4 识别异常处理464

13.5 x64异常处理475

13.5.1 RUNTIME_FUNCTION结构476

13.5.2 UNWIND_INFO结构476

13.5.3 UNWIND_CODE结构478

13.5.4 特定于语言的处理程序478

13.5.5 x64 FuncInfo的变化479

13.5.6 还原x64的try…catch481

13.6 本章小结484


第三部分 逆向分析技术应用

第14章 PEiD的工作原理分析486

14.1 开发环境的识别486

14.2 开发环境的伪造494

14.3 本章小结497


第15章 调试器OllyDbg的工作原理分析498

15.1 INT3断点498

15.2 内存断点503

15.3 硬件断点507

15.4 异常处理机制513

15.5 加载调试程序519

15.6 本章小结522


第16章 大灰狼远控木马逆向分析523

16.1 调试环境配置523

16.2 病毒程序初步分析524

16.3 启动过程分析525

16.4 通信协议分析532

16.5 远控功能分析536

16.6 本章小结551


第17章 WannaCry勒索病毒逆向分析552

17.1 tasksche.exe勒索程序逆向分析552

17.1.1 病毒初始化552

17.1.2 加载病毒核心代码558

17.1.3 病毒核心代码562

17.2 mssecsvc.exe蠕虫程序逆向分析569

17.2.1 蠕虫病毒代码初始化569

17.2.2 发送漏洞攻击代码573

17.3 永恒之蓝MS17-010漏洞原理分析577

17.3.1 漏洞1利用分析577

17.3.2 漏洞2利用分析583

17.3.3 漏洞3利用分析584

17.4 本章小结586


第18章 反汇编代码的重建与编译587

18.1 重建反汇编代码587

18.2 编译重建后的反汇编代码590

18.3 本章小结591


参考文献592


踩楼赠书!仅限5本!

若所踩楼层与系统内置的中奖楼层匹配上,立即显示中奖。 

注意事项:

1. 每个ID只能获得一次奖励,踩楼帖只能回复一帖。

2. 严禁用马甲参与活动,一经发现视为放弃参加此活动。


好书不容错过!欢迎大家踊跃参与~


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2021-9-26 15:18 被Editor编辑 ,原因:
收藏
点赞10
打赏
分享
827457296
最新回复 (330)
雪    币: 164
活跃值: (1823)
能力值: ( LV11,RANK:185 )
在线值:
发帖
回帖
粉丝
MTRush 1 2021-9-26 15:03
2
0
雪    币: 7
活跃值: (4331)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
0x2l 3 2021-9-26 15:04
3
0

求你了,3楼中一个!!!

最后于 2021-9-26 15:05 被0x2l编辑 ,原因:
雪    币: 4282
活跃值: (2832)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
coNg叶 2021-9-26 15:05
4
0
雪    币: 10230
活跃值: (2255)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
joker陈 2021-9-26 15:06
5
0
反汇编与逆向工程
雪    币: 6351
活跃值: (2599)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
blackcore 2021-9-26 15:09
6
0
反汇编与逆向工程
雪    币: 958
活跃值: (2073)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
watswyqtwq 2021-9-26 15:11
7
0
踩一下,不中,我就买一本
雪    币: 187
活跃值: (222)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
独一无② 2021-9-26 15:12
8
0
谢谢,踩一个
雪    币: 205
活跃值: (2619)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
yeyeshun 2 2021-9-26 15:14
9
0
来看看脸。8楼好像已经中奖了
雪    币: 188
活跃值: (373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xkkhh 2021-9-26 15:21
10
0
降低中奖率
雪    币: 6528
活跃值: (2598)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Kisesy 2021-9-26 15:22
11
0
好啊
雪    币: 220
活跃值: (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Sammael 2021-9-26 15:22
12
0
踩踩踩
雪    币: 192
活跃值: (12)
能力值: ( LV2,RANK:13 )
在线值:
发帖
回帖
粉丝
8yt1s 2021-9-26 15:22
13
0
踩一下,哈哈
雪    币: 3
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
痴姜的猫 2021-9-26 15:22
14
0
天选之子
雪    币: 1328
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
l桀骜 2021-9-26 15:23
15
0
凑人头
雪    币: 69
活跃值: (2588)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Harpe 2021-9-26 15:24
16
0
我来了!!!!
雪    币: 0
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
图zhang 2021-9-26 15:24
17
0
雪    币: 340
活跃值: (902)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
noword_forever 5 2021-9-26 15:24
18
0
看看运气
雪    币: 10
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bancn 2021-9-26 15:27
19
0
试试运气
雪    币: 1448
活跃值: (579)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
船长可乐 2021-9-26 15:27
20
0
谢谢,踩一个
雪    币: 37
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tenderelf 2021-9-26 15:27
21
0
拿来吧你
雪    币: 440
活跃值: (848)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
猫子 2021-9-26 15:27
22
0
谢谢,踩一个
雪    币: 40
活跃值: (162)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ai匿名 2021-9-26 15:27
23
0
加油加油
雪    币: 3134
活跃值: (7764)
能力值: ( LV4,RANK:41 )
在线值:
发帖
回帖
粉丝
_重黎 2021-9-26 15:27
24
0
虽然已经买了。还是支持一下。
雪    币: 2251
活跃值: (2148)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
LexSafe 2021-9-26 15:28
25
0
降低中奖率
游客
登录 | 注册 方可回帖
返回