漏洞战争:软件漏洞分析精要

漏洞战争:软件漏洞分析精要 pdf epub mobi txt 电子书 下载 2025

林桠泉 著
图书标签:
  • 软件安全
  • 漏洞分析
  • 漏洞挖掘
  • 渗透测试
  • 逆向工程
  • 缓冲区溢出
  • Web安全
  • 二进制安全
  • 安全研究
  • 攻防技术
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121289804
版次:1
商品编码:11983614
品牌:Broadview
包装:平装
丛书名: 安全技术大系
开本:16开
出版时间:2016-06-01
用纸:轻型纸
页数:604
字数:960360
正文语种:中文

具体描述

编辑推荐

适读人群 :本书适合计算机相关专业的本科及研究生,信息安全爱好者,软件安全及移动安全相关的安全从业人员,软件开发与测试人员、黑客等阅读。

《漏洞战争:软件漏洞分析精要》是这些年来难得一见的系统、全面深入分析漏洞攻防心要与战术的书籍。《漏洞战争:软件漏洞分析精要》结合经典的漏洞案例,从攻防思路、分析方法与实战等方面对漏洞攻防做了详细的阐述。既照顾了全局的视野,又不失细节上的周到,对于有志于安全事业并想在安全技术分析上有所提升的读者,这是一本可信赖的必备书籍。正如wushi老师所说:“……对照本书动手调试这些经典漏洞,我相信只要认真做一遍,功力会大增。”

还犹豫什么呢,好书,一本就够!

内容简介

《漏洞战争:软件漏洞分析精要》系统地讲解软件漏洞分析与利用所需的各类工具、理论技术和实战方法,主要涉及Windows 和Android 系统平台。《漏洞战争:软件漏洞分析精要》根据不同的软件漏洞类型划分,比如堆栈溢出、沙盒逃逸、类型混淆、UAF、内核漏洞等,同时又针对当前流行的移动安全,加入Android 平台上的漏洞分析与利用。以精心挑选的经典漏洞为例,以分享漏洞的分析技巧和工具为主,对这些漏洞的成因、利用及修复方法进行详细讲解,旨在“授之以渔”。《漏洞战争:软件漏洞分析精要》的特点是以各种类型的经典漏洞作为实战讲解,摒弃空头理论,几乎是“一本用调试器写出来的书”。

《漏洞战争:软件漏洞分析精要》适合计算机相关专业的本科及研究生,信息安全爱好者,软件安全及移动安全相关的安全从业人员,软件开发与测试人员、黑客等阅读。


作者简介

林桠泉,网络ID:riusksk、泉哥、林大夫,腾讯高级工程师,毕业于福建中医药大学中西医骨伤专业,大学期间曾在著名杂志《黑客防线》发表技术文章30余篇,大五时获得“微软杯”ExploitMe 安全调试技术个人挑战赛二等奖。毕业后就职于腾讯安全应急响应中心(TSRC),主要从事安全应急响应工作,研究方向主要聚焦在软件安全、移动安全、Web安全等。业余时间,偶而帮助友商解决安全问题,曾获得 Microsoft、Adobe、Apple、Yahoo、百度、阿里等各大厂商的漏洞致谢。

精彩书评

本书对近年来影响比较大的漏洞一一详细剖析,于细节处可以看出作者的功力,对于漏洞攻防领域是一本不可多得的原创好书。

读者可以对照着动手调试这些经典漏洞,我相信只要认真做一遍,功力会大增。

—— 腾讯科恩实验室总监 wushi


过去的几年,我们见证了移动互联网的兴起,也见证了软件漏洞战场从PC端向移动端的迁移。本书从这个视角出发,结合实例、深入浅出、涵盖全面,是学习软件漏洞的*佳之选。同时,本书作者riusksk(泉哥)在腾讯安全应急响应中心负责软件漏洞的处理和研究,有着丰富的实战经验。强烈推荐!

—— 腾讯安全平台部总监 lake2


安全漏洞的挖掘与分析是隐秘且难度较高的一门技术,系统性的学习资料更是少之又少。本书以近年来报告出的经典漏洞为蓝本,分析并讲解了常见的各种系统及软件漏洞的成因及攻击方法,通过对这些精彩漏洞实例的全面讲解,相信读者对软件漏洞技术会有更加全面的认识。随着全书内容的展开,读者一定会与我一样,被漏洞挖掘者的聪明与智慧折服。

—— 软件安全专家,《Android软件安全与逆向分析》及

《Mac OS X软件安全与逆向分析》作者 丰生强


对软件漏洞进行分析研究是提高软件安全技术水平的途径之一,他山之石可以攻玉,这本书为我们提供了一个很好的开始,值得认真学习。移动平台的漏洞研究是当下的热点,本书与时俱进地纳入了这一部分内容,不可不读!

—— 自由安全研究者,《挖0day》作者 爱无言


这是自《0day安全:软件漏洞分析技术》以来,又一本关于二进制漏洞分析*全面的力作,本书结合新的经典漏洞与新型分析方法,深度剖析不同类型的安全漏洞,结合不同的分析方法,做到授人以渔。相信能够帮助那些希望从事安全行业的人员,为其提供更好的帮助。

—— 阿里安全威胁情报中心安全专家 instruder


随着互联网的蓬勃发展,安全漏洞也跟着逐年爆发。未知攻,焉知防!因此,如何快速分析漏洞成因是安全研究员必备的一项技能。本书涵盖了各种各样的漏洞类型,覆盖了PC端和移动端,极具实战性和全面性,兼具实用性和时效性,干货满满,是安全研究员提高漏洞分析能力的利器。俱往矣,数漏洞分析,还看此书!

—— 阿里巴巴移动安全专家 dragonltx


目录

第1章 基础知识 1
1.1 漏洞的相关概念 1
1.1.1 什么是漏洞 1
1.1.2 漏洞的价值 1
1.1.3 0Day漏洞 2
1.1.4 PoC与Exploit 2
1.2 为什么要分析漏洞 2
1.3 常用分析工具 3
1.3.1 IDA―反汇编利器 3
1.3.2 OllyDBG―破解与逆向常用调试器 4
1.3.3 Immunity Debugger―漏洞分析专用调试器 4
1.3.4 WinDbg―微软正宗调试器 5
1.3.5 GDB―Linux调试器 6
1.3.6 JEB―Android反编译器 7
1.3.7 其他 8
1.4 常见的漏洞分析方法 8
1.4.1 静态分析 8
1.4.2 动态调试 9
1.4.3 源码分析 9
1.4.4 补丁比较 9
1.4.5 污点追踪 10
1.5 学习资源 11
1.5.1 站点分享 11
1.5.2 书籍推荐 12
1.6 本章总结 13
第2章 栈溢出漏洞分析 14
2.1 栈溢出简史 14
2.2 栈溢出原理 15
2.3 CVE-2010-2883 Adobe Reader TTF字体SING表栈溢出漏洞 16
2.3.1 LuckyCat攻击事件 16
2.3.2 漏洞描述 18
2.3.3 分析环境 18
2.3.4 基于字符串定位的漏洞分析方法 19
2.3.5 样本Exploit技术分析 20
2.3.6 样本shellcode恶意行为分析 26
2.3.7 漏洞修复 29
2.4 CVE-2010-3333 Microsoft RTF栈溢出漏洞 30
2.4.1 林来疯攻击事件 30
2.4.2 漏洞描述 31
2.4.3 分析环境 31
2.4.4 RTF文件格式 32
2.4.5 基于栈回溯的漏洞分析方法 33
2.4.6 漏洞利用 41
2.4.7 Office 2003与Office 2007 Exploit通用性研究 42
2.4.8 漏洞修复 45
2.5 CVE-2011-0104 Microsoft Excel TOOLBARDEF Record栈溢出漏洞 51
2.5.1 漏洞描述 51
2.5.2 分析环境 52
2.5.3 基于污点追踪思路的漏洞分析方法 52
2.5.4 漏洞修复 59
2.6 阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞 60
2.6.1 漏洞描述 60
2.6.2 分析环境 60
2.6.3 针对ActiveX控件的漏洞分析方法 60
2.6.4 漏洞利用 63
2.7 CVE-2012-0158 Microsoft Office MSCOMCTL.ocx栈溢出漏洞 65
2.7.1 Lotus Blossom 行动 65
2.7.2 漏洞描述 65
2.7.3 分析环境 65
2.7.4 基于OffVis工具的Office漏洞分析方法 66
2.7.5 漏洞修复 71
2.8 总结 72
第3章 堆溢出漏洞分析 73
3.1 堆溢出简史 73
3.2 堆溢出原理 74
3.3 堆调试技巧 79
3.3.1 堆尾检查 80
3.3.2 页堆 81
3.4 CVE-2010-2553 Microsoft Cinepak Codec CVDecompress函数堆溢出漏洞 85
3.4.1 漏洞描述 85
3.4.2 分析环境 85
3.4.3 基于HeapPage的堆漏洞分析方法 85
3.4.4 漏洞修复 101
3.5 CVE-2012-0003 Microsoft Windows Media Player winmm.dll MIDI文件堆溢出漏洞 104
3.5.1 关于“蜘蛛”漏洞攻击包(Zhi-Zhu Exploit Pack) 104
3.5.2 漏洞描述 105
3.5.3 分析环境 105
3.5.4 MIDI文件格式 105
3.5.5 基于导图推算的漏洞分析方法 107
3.5.6 漏洞利用 122
3.5.7 补丁比较 130
3.6 CVE-2013-0077 Microsoft DirectShow quartz.dll m2p文件堆溢出漏洞 130
3.6.1 漏洞描述 130
3.6.2 基于HTC的漏洞分析方法 131
3.6.3 漏洞修复 134
3.7 CVE-2012-1876 Internet Exporter MSHTML.dll CalculateMinMax堆溢出漏洞 135
3.7.1 在Pwn2Own黑客大赛上用于攻破IE9的漏洞 135
3.7.2 分析环境 135
3.7.3 基于HPA的漏洞分析方法 135
3.7.4 通过信息泄露实现漏洞利用 149
3.7.5 漏洞修复 161
3.8 小结 163
第4章 整数溢出漏洞分析 164
4.1 整数溢出简史 164
4.2 整数溢出原理 164
4.2.1 基于栈的整数溢出 165
4.2.2 基于堆的整数溢出 166
4.3 CVE-2011-0027 Microsoft Data Access Components整数溢出漏洞 167
4.3.1 在Pwn2Own黑客大赛上用于攻破IE8的漏洞 167
4.3.2 基于堆分配记录的漏洞分析方法 168
4.3.3 补丁比较 176
4.4 CVE-2012-0774 Adobe Reader TrueType字体整数溢出漏洞 178
4.4.1 漏洞描述 178
4.4.2 PDF文件格式与常用分析工具 178
4.4.3 基于条件记录断点的漏洞分析方法 182
4.4.4 补丁分析 196
4.5 CVE-2013-0750 Firefox字符串替换整数溢出漏洞 197
4.5.1 漏洞描述 197
4.5.2 基于源码调试的漏洞分析方法 197
4.5.3 源码比对 207
4.6 CVE-2013-2551 Internet Explorer VML COALineDashStyleArray 整数溢出漏洞 208
4.6.1 在Pwn2Own黑客大赛上攻破IE10的漏洞 208
4.6.2 基于类函数定位的漏洞分析方法 208
4.6.3 利用信息泄露实现漏洞利用 223
4.7 总结 226
第5章 格式化字符串漏洞分析 227
5.1 格式化字符串漏洞简史 227
5.2 格式化字符串漏洞的原理 227
5.3 CVE-2012-0809 Sudo sudo_debug函数格式化字符串漏洞 234
5.3.1 漏洞描述 234
5.3.2 通过源码比对分析漏洞 234
5.4 CVE-2012-3569 VMware OVF Tool格式化字符串漏洞 235
5.4.1 漏洞描述 235
5.4.2 基于输出消息的漏洞定位方法 235
5.5 总结 242
第6章 双重释放漏洞分析 243
6.1 双重释放漏洞简史 243
6.2 双重释放漏洞的原理 243
6.3 CVE-2010-3974 Windows 传真封面编辑器fxscover.exe双重释放漏洞 246
6.3.1 漏洞描述 246
6.3.2 通过栈回溯和堆状态判定漏洞类型 246
6.3.3 通过补丁比较确定漏洞成因及修复方法 249
6.4 CVE-2014-0502 Adobe Flash Player 双重释放漏洞 251
6.4.1 GreedyWonk行动 251
6.4.2 静态分析攻击样本 251
6.4.3 shellcode动态分析 263
6.4.4 基于ROP指令地址的反向追踪 265
6.5 总结 273
第7章 释放重引用漏洞分析 274
7.1 释放重引用(Use After Free,UAF)漏洞简史 274
7.2 UAF漏洞时原理 274
7.3 CVE-2011-0065 Firefox mChannel UAF漏洞 277
7.3.1 漏洞描述 277
7.3.2 通过动态调试快速定位漏洞源码 277
7.3.3 漏洞利用 285
7.3.4 源码比对 286
7.4 CVE-2013-1347 Microsoft IE CGenericElement UAF漏洞 287
7.4.1 “水坑”攻击事件 287
7.4.2 通过HPA快速定位漏洞对象 287
7.4.3 逆向分析IE引擎对JavaScript代码的解析 290
7.4.4 追本溯源:探寻漏洞的本质 321
7.4.5 漏洞利用 324
7.5 CVE-2013-3346 Adobe Reader ToolButton UAF漏洞 326
7.5.1 “Epic Turla”网络间谍攻击行动 326
7.5.2 使用peepdf分析PDF恶意样本 326
7.5.3 漏洞利用 338
7.6 CVE-2015-0313 Adobe Flash Player Workers ByteArray UAF漏洞 340
7.6.1 漏洞描述 340
7.6.2 分析ActiveScript虚拟机源码辅助漏洞调试 340
7.6.3 Flash JIT调试插件与符号文件 353
7.6.4 漏洞利用 354
7.6.5 漏洞修复 360
7.7 本章总结 360
第8章 数组越界访问漏洞分析 361
8.1 数组越界与溢出的关系 361
8.2 数组越界访问漏洞原理 361
8.3 CVE-2011-2110 Adobe Flash Player 数组越界访问漏洞 363
8.3.1 漏洞描述 363
8.3.2 解决安装旧版Flash Player的限制问题 364
8.3.3 通过Perl脚本辅助分析样本 365
8.3.4 搭建服务器重现漏洞场景 371
8.3.5 通过修改样本代码定位漏洞 373
8.3.6 通过构造信息泄露利用漏洞 376
8.3.7 通过搜索指令序列分析补丁 380
8.4 CVE-2014-0160 OpenSSL TLS 数组越界访问漏洞(“心脏出血”漏洞) 382
8.4.1 漏洞描述 382
8.4.2 基于源码对比与跟踪的漏洞分析方法 383
8.4.3 利用漏洞盗取网站账号 389
8.5 本章总结 394
第9章 内核漏洞分析 395
9.1 Windows内核漏洞漫谈 395
9.2 Windows内核调试环境搭建 396
9.3 常见内核漏洞原理与利用 398
9.3.1 漏洞成因分析 398
9.3.2 漏洞利用 405
9.4 360安全卫士bregdrv.sys本地提权漏洞分析 414
9.4.1 漏洞描述 414
9.4.2 基于导出函数和IO控制码的追踪分析 414
9.5 CVE-2011-2005 Windows Afd.sys 本地提权漏洞 423
9.5.1 漏洞描述 423
9.5.2 从利用代码到漏洞函数的定位分析 423
9.5.3 补丁比较 426
9.6 CVE-2013-3660 Windows win32k.sys EPATHOB指针未初始化漏洞 426
9.6.1 漏洞描述 426
9.6.2 通过IDA定义结构体辅助分析 427
9.6.3 漏洞利用 431
9.7 CVE-2014-1767 Windows AFD.sys 双重释放漏洞(Pwn2Own 2014) 437
9.7.1 漏洞描述 437
9.7.2 基于IOCTL处理函数自动追踪记录的分析方法 437
9.7.3 漏洞利用 454
9.7.4 补丁分析 460
9.8 本章总结 462
第10章 Android平台漏洞分析 463
10.1 Android平台漏洞简史 463
10.2 Android平台漏洞分类 466
10.3 常见的漏洞分析方法 467
10.3.1 APK静态分析 467
10.3.2 smali动态调试 468
10.3.3 so库动态调试 474
10.3.4 补丁源码比对 475
10.3.5 系统Java源码调试 477
10.3.6 系统C/C++源码调试 486
10.3.7 Android内核源码调试 488
10.4 智能插座漏洞分析 492
10.4.1 漏洞描述 492
10.4.2 静态逆向分析 492
10.4.3 利用漏洞控制网络上的任意插座 497
10.4.4 总结 502
10.5 CVE-2013-4787 Android系统签名漏洞 502
10.5.1 漏洞描述 502
10.5.2 Android签名机制 503
10.5.3 漏洞重现 509
10.5.4 漏洞原理分析 514
10.5.5 漏洞修复 516
10.6 CVE-2010-1119 Android WebKit UAF漏洞 516
10.6.1 漏洞描述 516
10.6.2 漏洞利用 517
10.6.3 通过补丁源码分析漏洞成因 524
10.7 CVE-2014-3153 Android内核Futex提权漏洞(Towelroot) 528
10.7.1 Android设备Root神器―Towelroot 528
10.7.2 通过内核源码调试分析漏洞 528
10.7.3 漏洞利用 548
10.7.4 漏洞修复 554
10.8 本章总结 554
第11章 其他类型的漏洞分析 555
11.1 本章引言 555
11.2 CVE-2013-2423 JAVA Applet reflection 类型混淆代码执行漏洞 555
11.2.1 漏洞描述 555
11.2.2 类型混淆漏洞 555
11.2.3 Java安全机制 556
11.2.4 漏洞分析与利用 558
11.2.5 漏洞修复 562
11.2.6 2013年漏洞之王―Java 563
11.3 CVE-2014-0257 Microsoft Internet Explorer 11 dfsvc 组件沙盒逃逸漏洞 564
11.3.1 漏洞描述 564
11.3.2 IE沙盒保护原理 564
11.3.3 IE沙盒攻击面分析 569
11.3.4 CVE-2014-0257漏洞分析与利用 570
11.4 CVE-2014-9150 Adobe Acrobat Reader MoveFileEx IPC Hook 竞争条件
(沙盒逃逸)漏洞 572
11.4.1 Therac-25 医疗事故 572
11.4.2 竞争条件漏洞原理 573
11.4.3 CVE-2014-9150漏洞描述 574
11.4.4 Adobe沙盒简介 574
11.4.5 利用漏洞实现沙盒逃逸 575
11.5 本章总结 578
第12章 软件漏洞发展趋势 579
12.1 软件漏洞领域的新挑战 579
12.2 移动终端漏洞发展趋势 579
12.3 云计算平台漏洞发展趋势 581
12.4 物联网漏洞发展趋势 583
12.5 本章总结 585

精彩书摘

推荐序

独乐乐,与人乐乐,孰乐?

不断向底层钻研的技术深度,创造性的广度思维,契而不舍地执着追求是成为优秀的安全研究员所必备的基础素质,无疑riusksk全都具备。

单论技术本身,问世间,是否此山最高,没有人能说的清楚。但是我在书目中还看到了许多超出技术的其他元素:有精益求精、追求完美的极客精神;有循序渐进、耐心引导的导师身影;有架构明晰,逻辑严谨的整体设计感;最能打动我的,其实是那份炽热的分享精神,毫无保留地去帮助那些还在摸索中学习的朋友。

一代宗师除了不断修炼自己之外,还需要将自己的智慧发扬传承,我在书中看到了这样的影子。《0day安全:软件漏洞分析技术》作者,北京子衿晨风科技有限公司CEO

failwest


前言/序言

为什么写这本书

不知道大家是否曾有过这样的经历:

● 无法读懂网上很多软件漏洞分析文章,不理解里面的漏洞成因和漏洞利用技巧。

● 即使读懂某篇软件漏洞分析文章,自己仍无法独立完成相同漏洞的分析。如果文章中所使用的测试环境与软件版本跟自己使用的不一样,则顿时更不知如何入手。

● 很多软件漏洞分析文章贴出存在漏洞的汇编代码,指出导致漏洞的原因,即“结论式分析”,但如何定位到此段代码并无解释,看完之后,仍不知如何快速定位,缺乏可借鉴的思路。带着这些问题,相信读者会在本书中找到想要的答案。

再来聊下本书的一些写作经历,开始写作本书始于2012年5月,最初是“爱无言”找到我,说大家合作写一本关于软件漏洞案例分析的书,因为那段时间我在博客上每周都会分享一两篇软件漏洞分析的实际案例,而当时国内还没有专门写软件漏洞案例的专著(几年前出版的《0Day安全:软件漏洞分析技术》主要偏向堆和栈溢出及内核方面的漏洞分析,实际案例较少,且“爱无言”也是作者之一)。

就这样,两人开始谋划,写书的念头就此产生。

后来,我又拉了两位朋友加入,然后几人列出大纲目录,但最后因为种种原因,只剩下我一人独自完成本书创作,中途也多次想放弃,但庆幸的是,历时3年半,终于2015年12月完稿,共历时4年后出版。

就这样,一本原为“合著”的书就写成了“专著”。

由于朋友的退出,以及写作速度较慢,中途停写半年,已原本打算放弃。后来,有一天,编辑“皎子”找我聊了一些出书的想法。

就这样,一本原打算沉留箱底的“残卷”再次被“激活”。

之后的写书经历还算顺利,又历时一年左右完稿,比较符合预期,遗留心底多年的梗总算可以释怀了。

相信一些读者看完本书目录之后会有一些疑问,也相信其中一些疑问也是我在定位本书方向时考虑的,所以有必要在此谈一谈。

Q:本书与《0day 安全:软件漏洞分析技术》有何区别?

A:0day安全一书主要是讲Windows平台下堆栈溢出和内核提权的漏洞分析技术,还涉及部分格式化字符串漏洞,从基础讲起,最后是实例分析。本书则完全是以真实的漏洞为实例以分享漏洞分析时的一些技巧,以漏洞类型的不同来分享不同的漏洞分析技巧,可以说是“用调试器写出来的一本书”,而且综合考虑当前热门的移动安全,特意加入Android平台上的漏洞分析章节,从Java层、Native层和内核层等方向分享不同的调试分析方法。从难度而言,本书比《0day安全:软件漏洞分析技术》一书更难,可以将本书当作进阶版,搭配学习。

Q:本书列举的许多漏洞实例网上早有分析文章,为何还写这本书?

A:著书的宗旨在于“授人以鱼,不如授人以渔”。如果读者经常看网上的漏洞分析文章,就会发现一个常见现象:它们大多是“结论性分析”,而非“思路性分析”。换句话说,就是贴出存在漏洞的汇编代码,然后直接给出漏洞成因的结论,至于如何定位到漏洞代码,并没有给出分析思路。正因为如此,即使你看懂了Vupen漏洞军火商写的分析文章,也不代表你看完后就能独立分析出来,甚至在调试之后,你还会发现Vupen在一些文章里留有“坑”,故意省略或写错某些关键内容,如果没有自己实际调试一遍是很难发现这些问题的。

相信有一定软件漏洞分析经验的朋友会注意到,软件漏洞分析的大部分时间是花费在寻找和定位漏洞代码,而非分析存在漏洞的代码。对于有一定编程经验和漏洞基础的读者,如果直接给一段漏洞代码,可能很容易就看出来,但像Adobe和Windows这些复杂的软件或系统,在千千万万的代码行中找到漏洞代码是有一定难度的。因此,本书的重点是讲授如何快速地定位漏洞代码,针对不同漏洞类型采取不同的分析技巧,以帮助大家快速地分析出漏洞成因,制定检测、防御与修复方案。书中的漏洞实例分析技巧是可以长期运用和延伸的,这才是本书的核心价值。

Q:如何借助本书提升自身的软件漏洞分析能力?

A:本书主要面向有一定软件漏洞基础的读者,如果缺乏这方面的基础,且有一定C语言和汇编语言基础,建议提前看看《0day安全:软件漏洞分析技术》一书。软件漏洞分析是一门实践性比较强的安全领域分支,需要许多实际动手的调试经验,因此建议大家在看本书时,一边看一边动手调试,以加深理解,就像骑自行车一样,熟练之后,哪怕十年未碰,也依然会骑。本书在分析漏洞时,也尽量以思路性地描述为主,以讲解分析漏洞时的思考方式和常用技巧,包括工具和方法论,因此大家在阅读时,应该掌握书中介绍的思考方式、工具运用及分析技巧,毕竟单个漏洞案例本身是会过时的,但技巧性的东西总是可以借鉴和扩展。

记得大一上第一节历史课时,老师说过这样一句话,如果在未来的某一天,你在和朋友闲聊时,能够运用到历史课上学到的知识,哪怕一句话作为谈资,那这历史课就算没白学。同样地,我也希望未来大家在分析软件漏洞时,本书能够提供一些帮助,哪怕是一个分析技巧,一个工具使用,我也觉得这4年的付出算值了。

纵观近五年,各种APT攻击事件频发,包括知名企业,甚至国家级单位都曾遭受到漏洞攻击。每年都有一款产品的漏洞被频繁用于网络攻击,比如2012年的Office漏洞(还记得经典的CVE-2012-0158吗?),2013年的Java漏洞,2014年的Internet Explorer漏洞,2015年Adobe Flash漏洞。PC端上的软件漏洞一直在逐年增加,虽然厂商在不断地推出各种安全机制,但漏洞利用技术的发展从未间断,Exploiter们依然生存得很好。同时,互联网早已步入移动化时代,伴随着PC软件漏洞攻击事件的频发,移动端的漏洞攻击也在逐年增长。因此,笔者结合PC端(Windows)与移动端(Android)平台上的漏洞案例,历时近4年,将自身的实战经验整理成本书。

求学之路

经常有人问我:“一个医学生为什么会转行做安全?”,通常我都会这么回答:“因为小说看多了”。

大一时,由于喜欢看黑客小说,比如《黑客传说》《地狱黑客》《指间的黑客》,就去图书馆找一些黑客书籍学习,每天中午都不休息,几乎天天都泡在图书馆看书,甚至翘课去看计算机书。

大四才买计算机,在此之前一直都只能去网吧、学校机房或者借用舍友的计算机。当年就用诺基亚3100手机看完了《Windows程序设计》、《Windows核心编程》和《Windows环境下32位汇编语言程序设计》。后来就网购实体书来看,这样比在网吧看电子书更实惠。

大学期间,经常给《黑客防线》杂志投稿,一方面可以提高个人技术,一方面可以用稿费作为生活补贴,后来就用稿费加上我哥的经济支持,买下了第一台属于自己的计算机,本书就有一半内容是在那台计算机上完成的。

在求学这条道路上,我一直是一个人默默地前行着,就连一块生活了几年的舍友也不知道我在学习安全方面的知识,我买的一堆计算机书籍一直藏在宿舍衣柜最里面。在此过程中,自己走过很多弯路,甚至多次差点放弃,但很庆幸最后还是坚持下来了,并直至今日,依然在安全这条道路上前行着……

面试经历

在圈内朋友的建议下,我在大五(医学五年制)上学期开始找安全相关的工作,最终顺利拿到安恒和腾讯的offer。当初投简历给安恒时,安恒的副总裁看完简历后直接发了offer,我有点受宠若惊,也特别感谢安恒的信任,但最终还是选择了腾讯。面试腾讯的经历,我觉得是个有趣的过程,值得与大家分享。

那年我还在厦门市第二医院骨伤科实习,门诊部刚好不是特别忙,我在给一位腰椎患者做完针灸后,就接到来自腾讯安全中心的面试电话。然后趁主任不在,偷偷躲到门诊部后面的楼梯口进行电话面试,整个面试过程还算比较顺利,第2天腾讯安全中心就来电说希望我到深圳总部面试。

到了深圳总部后,腾讯安全中心的主管面试了我,虽然聊了一个半小时,但没有问我多少问题,聊完后直接被带去HR那里面试。

HR面试我时,并非以常规的话题开场,我们是以腰椎间盘突出的话题开场的,也算是一次别开生面的面试经历。

回到厦门后,我跟带教老师说明了转行情况,之后有上手术台的机会,我都会主动让给其他同班同学,让他们有更多上台练手的机会,而我自己自然有更多的时间去专研安全技术。

加入腾讯

腾讯是我的第一家雇主,也是目前我唯一工作过的公司,从我毕业一直工作到现在。在公司我见证了腾讯安全应急响应中心(TSRC)的成立与发展,帮助完善各种流程和标准,作为早期主要的漏洞审核者,我也从广大白帽子身上学到很多东西,包括各种漏洞挖掘与利用技术,涉及各个安全领域,如Web安全、驱动安全、应用软件安全、移动安全等,正是TSRC给了我更多学习的机会,使得我在安全技术上能够更加全面地发展。除此之外,我在公司也做一些安全研究工作,并研发出Android与iOS应用安全审计系统,已投入公司日常运营使用。

至今,我依然觉得工作能够与兴趣结合在一起,是一件既幸福又幸运的事,而选择腾讯依然是我当年的明智之举。

著书感言

本书是我写的第一本书,也可能是最后一本技术书籍,只有自己经历了著书过程,才知道写书的不易。特别是类似本书这种以漏洞实例进行调试分析的书,写起来特别费时,也更需要有持之以恒之的毅力。如果说单纯写书用掉1年时间,那么我用来调试的时间大约是3年,因此可以说这是“一本用调试器写出来的书”。

“开头容易,收尾难”是个人著书的真实感受,很多人一时兴起写了开头,最后很难坚持下去,导致夭折了不少著作。

本书结构

本书共12章,可以分为三大部分。

基础篇(第1章):主要介绍一些软件漏洞相关的基本概念,以及常用工具及漏洞分析方法,最后向读者推荐一些相关的学习站点和书籍,方便读者做进一步地学习和交流。

实战篇(第2~11章):是本书最主要的部分,根据不同的漏洞类型挑选不同的经典案例,用不同的漏洞分析技巧,向读者介绍比较高效的分析方法,剖析各种常见的软件漏洞类型、原理、利用和修复的实战技术。同时,紧跟当前热门的移动互联网安全问题,增加了Android平台的漏洞分析,以保持内容与时俱进。

展望篇(第12章):对未来的软件漏洞发展趋势做出预判,相信未来的主要战场会更集中在移动终端、云计算平台、物联网三大方向上,并对现有的这些方向的漏洞案例进行简要介绍。

致谢

感谢我父母的养育之恩,是他们在背后默默地支持我前行。

感谢我的兄长在生活和工作上对我的帮助与支持。

感谢我的女朋友,正是她的督促和支持才让我能够准时完稿,并且书中有些截图是经过她后期制作的,以便使得图片的印刷效果更好。

感谢我的姑母长期以来对我生活上的关心与照顾。

感谢我的公司腾讯,它所营造的良好氛围,使我的技术水平和在职场的发展都更上一层楼。同时也感谢在工作中一直给予我帮助和鼓励的同事和领导,由于人数较多,就不一一列举。

感谢王清先生为本书作序,他所著书籍一直是软件安全行业的经典。

感谢博文视点的编辑皎子、郑柳洁及她们的团队,正是他们的努力才使得本书最终能够与大家见面。

感谢各位圈内的朋友,他们包括但不限于(排名不分先后):wushi、爱无言、仙果、wingdbg、instruder、kanxue、lake2、harite、h4ckmp、dragonltx、非虫、monster、gmxp、古河、冰雪风谷、KiDebug、KK……

由于作者水平有限,书中难免有误,欢迎各位业界同仁斧正!

2016年3月27日于深圳


《代码炼金术:探索隐藏的数字奥秘》 数字世界的基石,我们习以为常的便捷生活,无一不建立在无数精妙的代码之上。从操作系统到应用程序,从智能手机到云计算,代码如同看不见的血脉,驱动着现代文明的运转。然而,在这片由逻辑与符号构建的疆域里,潜藏着无数未被驯服的力量,等待着被洞察与掌握。 《代码炼金术:探索隐藏的数字奥秘》是一部致力于揭示代码深层秘密的著作。它并非一本简单的编程教程,而是带领读者深入代码的肌理,去理解其结构、行为,以及那些不为人知的特性。本书旨在培养一种“代码炼金术士”般的思维模式,让读者能够超越表面的功能,去感知代码背后隐藏的逻辑、设计哲学,乃至潜在的风险与机遇。 第一篇:窥探二进制的低语 在深入复杂的软件项目之前,我们首先需要理解代码的最终形态——机器语言。本书将带领读者从最基础的二进制层面出发,理解计算机如何执行指令,变量如何在内存中存储,以及数据是如何被编码和解码的。我们将探索不同的数据表示方式,例如整型、浮点型、字符集等,并理解它们在内存中的具体布局。 内存的语言: 深入解析内存地址、栈、堆等核心概念,理解变量的生命周期以及函数调用在内存中的堆叠过程。我们将学习如何通过调试工具窥探内存中的数据,从而理解程序的真实运行状态。 指令的脉搏: 剖析CPU指令集的基本构成,理解汇编语言的简洁与强大。通过阅读和分析简单的汇编代码,读者将能初步领略到程序执行的底层逻辑,理解高级语言如何被翻译成机器可执行的指令。 位图的秘密: 探讨数据在二进制层面是如何被组织的,例如布尔运算、位移操作等。理解这些基本操作的原理,将为后续的深入分析打下坚实的基础,尤其是在处理网络协议、文件格式等底层数据时,这些知识至关重要。 第二篇:结构的力量:代码的骨骼与血肉 软件程序并非杂乱无章的代码堆砌,而是经过精心设计的复杂结构。本篇将聚焦于代码的组织形式,解析不同类型的软件架构,以及它们如何在设计上影响程序的性能、可维护性和安全性。 模块化与抽象: 深入理解模块化编程的思想,以及如何通过接口、类、对象等机制实现代码的复用和封装。我们将分析不同编程范式(如面向对象、函数式编程)在结构设计上的差异,以及它们各自的优劣。 数据结构的智慧: 探讨各种经典数据结构,如数组、链表、栈、队列、树、图等。不仅仅是了解其定义,更重要的是理解它们在不同场景下的适用性,以及它们如何影响算法的效率。我们将通过实际代码示例,展示如何选择和应用合适的数据结构来解决实际问题。 算法的精妙: 聚焦于常见算法的设计思想,例如排序算法、搜索算法、图算法等。理解算法的时间复杂度和空间复杂度,是优化程序性能的关键。本书将引导读者思考算法的设计思路,并尝试自己设计和实现一些简单的算法。 设计模式的宝库: 介绍一些常用的软件设计模式,如单例模式、工厂模式、观察者模式等。这些模式是前人经验的总结,能够帮助开发者构建更灵活、可扩展、易于维护的代码。我们将分析每个模式的应用场景,以及它解决的核心问题。 第三篇:行为的艺术:代码的动态与交互 代码的生命在于其执行时的动态表现。本篇将着重于分析程序的运行时行为,理解程序如何与外部环境交互,以及在复杂交互中可能产生的各种现象。 并发与同步: 探讨多线程、多进程编程的挑战,以及如何使用锁、信号量、消息队列等机制来保证程序的正确性和稳定性。理解并发场景下的竞态条件、死锁等问题,是构建高性能、高可靠性系统的关键。 网络通信的奥秘: 深入解析TCP/IP协议栈,理解HTTP、FTP、DNS等常见网络协议的工作原理。我们将学习如何分析网络数据包,理解客户端与服务器之间的通信过程,以及网络编程中的常见陷阱。 状态的管理: 探索有限状态机、事件驱动模型等状态管理技术。理解程序在不同状态之间的转换逻辑,以及如何有效地管理程序的状态,是构建复杂业务逻辑的关键。 异常的处理与恢复: 学习如何优雅地处理程序运行时可能出现的异常,以及如何设计健壮的错误处理机制,保证程序在出错时能够尽可能地恢复,或者提供有用的错误信息。 第四篇:隐匿的角落:程序分析的利器 理解代码的结构与行为,离不开强大的分析工具与方法。本篇将介绍各种实用的程序分析技术,帮助读者深入挖掘程序的内在机制。 静态分析的洞察: 探索使用静态分析工具(如Linter、代码审查工具)来发现潜在的代码问题、不规范的写法以及可疑的代码模式。我们将学习如何阅读和理解静态分析报告,并根据报告进行代码优化。 动态分析的透视: 掌握使用调试器(如GDB、LLDB)进行断点调试、单步执行、变量查看等技术。我们将学习如何通过动态分析来理解程序的执行流程,定位bug,以及验证代码的行为。 性能分析的诊断: 介绍性能分析工具(如Profiler)的使用方法,帮助读者识别程序的性能瓶颈,并提供优化建议。我们将学习如何从CPU使用率、内存占用、I/O操作等方面入手,进行全面的性能诊断。 逆向工程的挑战: 简要介绍逆向工程的基本概念和常用工具,了解如何分析已编译的可执行文件,理解其工作原理。这部分内容将揭示代码在被编译后所呈现的另一面,为理解复杂系统提供更广阔的视角。 第五篇:代码的伦理与未来 在掌握了代码的底层原理与分析方法之后,本书将引导读者思考代码所带来的社会影响与伦理问题。 安全意识的萌芽: 探讨软件安全的基本概念,理解常见的安全威胁,以及良好的编程实践如何能够降低安全风险。虽然不深入讲解具体的漏洞,但会强调对代码安全性敏感性的培养。 代码的演进: 展望未来软件开发的趋势,如人工智能辅助编程、低代码/无代码平台的发展,以及它们对传统代码开发模式可能带来的影响。 持续学习的路径: 为读者提供继续深入学习的建议,推荐相关的书籍、社区、资源,鼓励读者在实践中不断探索与成长。 《代码炼金术:探索隐藏的数字奥秘》不仅仅是一本书,更是一场关于代码的探索之旅。它将带领你拨开迷雾,看见代码背后隐藏的逻辑、结构与能量。无论你是初学者还是有经验的开发者,都能从中获得宝贵的启发,提升你对软件世界的认知与驾驭能力,让你在数字的洪流中,成为那个能洞察本质、驾驭代码的炼金术士。

用户评价

评分

坦白说,在拿到《漏洞战争:软件漏洞分析精要》之前,我对软件漏洞的理解还比较片面,停留在一些比较基础的层面。但这本书彻底颠覆了我的认知。它从根本上讲解了软件漏洞的产生机制,以及如何进行深层次的分析。我被书中对于二进制漏洞的讲解深深吸引,那些关于反汇编、内存模型、以及ROP链构建的章节,虽然一开始有些挑战,但作者循序渐进的讲解方式,让我最终能够理解并掌握。尤其让我印象深刻的是,书中还探讨了如何从攻击者的视角去思考问题,如何预测和发现可能存在的攻击面。这对于我们防御者来说,是极其宝贵的财富。这本书的价值,远不止于技术知识的传递,它更是一种思维方式的引导,让我能够更主动、更全面地去面对软件安全带来的挑战。

评分

对于一个在安全领域摸爬滚打多年的老兵来说,《漏洞战争:软件漏洞分析精要》依然带来了巨大的惊喜。这本书的视角非常独特,它不只是罗列漏洞,而是深入剖析了“为什么”这些漏洞会存在,以及“如何”去系统性地发现它们。书中关于代码审计的章节,给我留下了深刻的印象。作者分享了大量实用的代码审计技巧,从静态分析的要点,到动态调试的辅助,都进行了详细的讲解。我特别喜欢书中对于一些复杂漏洞的案例分析,那些看似微不足道的代码缺陷,在作者的笔下被层层剥开,最终揭示出惊人的安全隐患。阅读过程中,我常常会停下来,回顾自己过去的工作,反思在安全防护上可能存在的疏漏。这本书不仅提升了我的技术能力,更重要的是,它让我对软件安全这个领域有了更深的敬畏之心。

评分

翻开《漏洞战争:软件漏洞分析精要》,我仿佛置身于一场高强度的技术博弈之中。书中对各种软件漏洞的剖析,简直是教科书级别的。作者对细节的关注令人惊叹,无论是内存损坏类的漏洞,还是Web应用中的注入类攻击,都被讲解得淋漓尽致。我尤其欣赏书中对于不同漏洞类型之间的关联性分析,以及它们如何组合起来形成更具破坏性的攻击链。读到关于fuzzing技术的部分,我更是受益匪浅,书中详细介绍了各种fuzzing框架的使用方法和效率提升技巧,这对于我实际工作中发现潜在的安全隐患非常有帮助。而且,作者在讲解过程中,并没有回避一些晦涩的技术细节,而是用通俗易懂的语言进行阐释,这使得我能够真正理解其中的原理,而不是停留在表面的操作。总而言之,这本书为我打开了一扇新的大门,让我对软件安全有了更深刻的认识和更全面的掌握。

评分

这本书无疑是我近期技术阅读体验中的一颗璀璨明珠。《漏洞战争:软件漏洞分析精要》以一种别开生面的方式,带领读者走进软件漏洞分析的奇妙世界。我特别欣赏书中将理论知识与实践技巧完美结合的编排方式。例如,在讲解到某些高危漏洞时,书中不仅给出了漏洞原理的详尽阐述,还提供了实际的攻击代码示例,让我能够直观地感受到漏洞的威力,并从中学习如何去复现和防御。另外,作者在书中对于防御策略的探讨,也是我非常看重的部分。它并没有仅仅停留在漏洞的挖掘,而是深入分析了如何从代码层面、架构层面去加固系统,从而有效抵御潜在的攻击。这种“知己知彼,百战不殆”的理念贯穿全书,让我受益匪浅。对于任何希望在软件安全领域有所建树的开发者、测试人员、安全工程师来说,这本书都将是他们职业生涯中不可或缺的指导手册。

评分

这绝对是今年我读过的最棒的技术书籍之一!从拿到《漏洞战争:软件漏洞分析精要》的那一刻起,我就被它深深吸引了。书中深入浅出地讲解了各种复杂的软件漏洞,从经典的缓冲区溢出,到更现代的逻辑漏洞和组件供应链安全问题,无不涵盖。作者的叙述方式非常引人入胜,仿佛一位经验丰富的侦探,一步步地引导读者去探究漏洞的根源。我特别喜欢书中关于利用技巧的部分,那些通过精心设计的payload来触发漏洞并最终获得控制权的演示,真是让人拍案叫绝。而且,书中不仅停留在“如何找到漏洞”,更侧重于“如何理解漏洞”,帮助我从更宏观的角度认识软件安全,以及如何构建更健壮、更安全的软件。对于任何想要深入了解软件漏洞,提升自己安全防护能力的技术人员来说,这本书都是一份不可多得的宝藏。它改变了我对安全漏洞的看法,让我看到了其中的逻辑、艺术和挑战。

评分

送货有延迟了,看看再来追评!

评分

非常棒的安全书籍,就是用调试器完成的一部书,需要一定的功底

评分

京东物流速度确实快。

评分

买来看看看买来看看看

评分

联想(Lenovo)SL700 240G SATA3 固态宝系列 SSD固态硬盘

评分

想买这本书很久,好书

评分

书很好 很有用 还有送货很快

评分

这个书相对比较专业了,需要有一定基础知识才能理解里面的东西

评分

买来看看看买来看看看

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有